Computer >> Máy Tính >  >> Lập trình >> Javascript

Chuẩn hóa các số trong một đối tượng - JavaScript

Giả sử, chúng ta có một đối tượng với các chuỗi được ánh xạ tới các số như thế này -

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

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một đối tượng như vậy làm đối số đầu tiên và một mảng gồm hai số đúng như đối số thứ hai.

Đối số thứ hai về cơ bản đại diện cho một phạm vi -

[a, b] (b >= a)

Công việc của chúng tôi là chuẩn hóa các giá trị đối tượng theo phạm vi.

Do đó, giá trị lớn nhất của đối tượng phải trở thành b và nhỏ nhất phải trở thành a. Và những đối tượng khác nằm giữa phải được điều chỉnh cho phù hợp.

Ví dụ

Sau đây là mã -

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);

Đầu ra

Điều này sẽ tạo ra kết quả sau trong bảng điều khiển -

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