ধরা যাক, আমাদের কাছে নিচের মতো স্ট্রিং-টু-নাম্বার ম্যাপ করা একটি অবজেক্ট রয়েছে:
const obj = {
num1: 45,
num2: 78,
num3: 234,
num4: 3,
num5: 79,
num6: 23
};
আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা প্রথম আর্গুমেন্ট হিসেবে এমন একটি অবজেক্ট এবং দ্বিতীয় আর্গুমেন্ট হিসেবে কেবল দুটি সংখ্যার একটি অ্যারে নেবে।
দ্বিতীয় আর্গুমেন্ট মূলত একটি রেঞ্জ নির্দেশ করে:
[a, b] (b >= a)
আমাদের কাজ হল অবজেক্টের মানগুলো রেঞ্জ অনুযায়ী নর্মালাইজ করা।
অর্থাৎ, অবজেক্টের সর্বোচ্চ মান হবে b এবং সর্বনিম্ন মান হবে a। এবং মাঝপথে থাকা মানগুলো অনুপাতিকভাবে অjusted হবে।
উদাহরণ
নিচের কোডটি দেখুন:
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
}