Giả sử chúng ta có một object ánh xạ chuỗi sang số như sau:
const obj = {
num1: 45,
num2: 78,
num3: 234,
num4: 3,
num5: 79,
num6: 23
};Chúng ta cần viết hàm nhận vào object này làm tham số thứ nhất và một mảng đúng hai số làm tham số thứ hai.
Tham số thứ hai đại diện cho một khoảng:
[a, b] (b >= a)
Nhiệm vụ là chuẩn hóa các giá trị của object theo khoảng đó. Giá trị lớn nhất của object phải trở thành b, giá trị nhỏ nhất trở thành a, các giá trị trung gian điều chỉnh tương ứng.
Ví dụ
Dưới đây là đoạn code:
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);Kết quả
Đoạn code sẽ in ra console:
{
num1: 10.91,
num2: 11.62,
num3: 15,
num4: 10,
num5: 11.65,
num6: 10.43
}