สมมติว่าเรามีวัตถุที่มีสตริงที่จับคู่กับตัวเลขเช่นนี้ −
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 }