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

JavaScript에서 두 객체를 비교하고 유사성 백분율을 나타내는 0에서 100 사이의 숫자를 반환합니다.

<시간/>

다음과 같은 두 개의 객체가 있다고 가정해 보겠습니다. -

const a = {
   Make: "Apple",
   Model: "iPad",
   hasScreen: "yes",
   Review: "Great product!",
};
const b = {
   Make: "Apple",
   Model: "iPad",
   waterResistant: false
};

객체의 공통 속성 수를 계산하는 함수를 작성해야 하며(공통 속성이란 키와 값이 모두 동일함을 의미함) 객체 간의 유사성 비율을 나타내는 0에서 100(둘 다 포함) 사이의 숫자를 반환해야 합니다. 키/값 쌍이 일치하지 않으면 0이 되고 모두 일치하면 100이 됩니다.

유사성 비율을 계산하려면 유사한 속성의 수를 더 작은 개체(키/값 쌍이 더 작은 개체)의 속성 수로 나누고 이 결과에 100을 곱하면 됩니다.

자, 이해했다면 이제 이 함수에 대한 코드를 작성해 봅시다 -

예시

const a = {
   Make: "Apple",
   Model: "iPad",
   hasScreen: "yes",
   Review: "Great product!",
};
const b = {
   Make: "Apple",
   Model: "iPad",
   waterResistant: false
};
const findSimilarity = (first, second) => {
   const firstLength = Object.keys(first).length;
   const secondLength = Object.keys(second).length;
   const smaller = firstLength < secondLength ? first : second;
   const greater = smaller === first ? second : first;
   const count = Object.keys(smaller).reduce((acc, val) => {
      if(Object.keys(greater).includes(val)){
         if(greater[val] === smaller[val]){
            return ++acc;
         };
      };
      return acc;
   }, 0);
   return (count / Math.min(firstLength, secondLength)) * 100;
};
console.log(findSimilarity(a, b));

출력

콘솔의 출력은 다음과 같습니다. -

66.66666666666666

더 작은 개체에는 3개의 속성이 있고 그 중 2개의 공통 속성은 약 66%에 달하기 때문입니다.