规范化对象中的数字 - JavaScript

javascriptweb developmentfront end technologyobject oriented programming

假设,我们有一个对象,其中的字符串映射到数字,如下所示 −

const obj = {
   num1: 45,
   num2: 78,
   num3: 234,
   num4: 3,
   num5: 79,
   num6: 23
};

我们需要编写一个 JavaScript 函数,该函数接受一个这样的对象作为第一个参数,并将一个严格包含两个数字的数组作为第二个参数。

第二个参数基本上表示一个范围 −

[a, b] (b >= a)

我们的工作是根据范围规范化对象值。

因此,对象的最大值必须成为 b,最小值必须成为 a。介于两者之间的其他值应进行相应调整。

示例

以下是代码 −

const obj = {
   num1: 45,
   num2: 78,
   num3: 234,
   num4: 3,
   num5: 79,
   num6: 23
};
const range = [10, 15];
const normaliseObject = (obj, range) => {
   const values = Object.values(obj);
   const min = Math.min.apply(Math, values);
   const max = Math.max.apply(Math, values);
   const variation = (range[1] - range[0]) / (max - min);
   Object.keys(obj).forEach(el => {
      const val = (range[0] + ((obj[el] - min) * variation)).toFixed(2);
      obj[el] = +val;
   });
};
normaliseObject(obj, range);
console.log(obj);

输出

这将在控制台中产生以下输出 −

{
   num1: 10.91,
   num2: 11.62,
   num3: 15,
   num4: 10,
   num5: 11.65,
   num6: 10.43
}

相关文章