Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

개체의 숫자 정규화 - JavaScript

<시간/>

다음과 같이 숫자에 매핑된 문자열을 가진 객체가 있다고 가정해 보겠습니다. -

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

우리는 하나의 객체를 첫 번째 인수로, 엄격하게 두 개의 숫자로 구성된 배열을 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

두 번째 인수는 기본적으로 범위를 나타냅니다 -

[a, b] (b >= a)

우리의 임무는 범위에 따라 개체 값을 정규화하는 것입니다.

따라서 객체의 가장 큰 값은 b가 되어야 하고 가장 작은 값은 반드시 b가 되어야 합니다. 그리고 그 사이에 있는 다른 값도 그에 따라 조정되어야 합니다.

예시

다음은 코드입니다 -

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
}