Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ทำให้ตัวเลขในวัตถุเป็นปกติ - JavaScript


สมมติว่าเรามีวัตถุที่มีสตริงที่จับคู่กับตัวเลขเช่นนี้ −

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
}