Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ปรับค่าตัวเลขในอ็อบเจกต์ให้อยู่ในช่วงที่กำหนด - JavaScript

สมมติว่าเรามีอ็อบเจกต์ที่ map สตริงกับตัวเลขดังนี้:

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

เราต้องเขียนฟังก์ชันที่รับอ็อบเจกต์นี้เป็นอาร์กิวเมนต์แรก และอาร์เรย์ของตัวเลข 2 ตัวเป็นอาร์กิวเมนต์ที่สอง อาร์เรย์ตัวที่สองแทนช่วง (range) [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
}