Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript에서 두 배열의 대응 값을 비교하는 방법

```html

문제 상황

다음과 같이 길이가 같은 두 개의 숫자 배열이 있다고 가정해 봅시다.

const arr1 = [23, 67, 12, 87, 33, 56, 89, 34, 25];
const arr2 = [12, 60, 45, 54, 67, 84, 36, 73, 44];

두 배열을 각각 첫 번째, 두 번째 인수로 받아 대응하는 값들을 서로 비교하는 JavaScript 함수를 작성해야 합니다. 함수는 다음과 같은 값을 반환해야 합니다.

  • -1: 첫 번째 배열에서 더 큰 대응 숫자의 개수가 두 번째 배열보다 많을 때
  • 1: 두 번째 배열에서 더 큰 대응 숫자의 개수가 첫 번째 배열보다 많을 때
  • 0: 양쪽의 개수가 동일할 때

예상 결과

위 배열을 예로 들면 출력값은 다음과 같습니다.

const output = 1;

그 이유는 arr1에는 더 큰 대응 요소가 4개 있는 반면, arr2에는 5개가 있기 때문입니다.

구현 코드

이를 구현한 코드는 아래와 같습니다.

const arr1 = [23, 67, 12, 87, 33, 56, 89, 34, 25];
const arr2 = [12, 60, 45, 54, 67, 84, 36, 73, 44];
const findDominance = (arr1 = [], arr2 = []) => {
    if(arr1.length !== arr2.length){
        return;
    };
    let count = 0;
    for(let i = 0; i < arr1.length; i++){
        const el1 = arr1[i];
        const el2 = arr2[i];
        const diff = el2 - el1;
        console.log(diff)
        count += diff / Math.abs(diff);
    };
    return count / Math.abs(count);
};
console.log(findDominance(arr1, arr2));

동작 원리

각 인덱스에서 두 요소의 차이(diff)를 계산한 뒤, 이를 자신의 절댓값으로 나누어 부호(+1 또는 -1)만 추출하고 모두 더합니다. 마지막으로 합계를 다시 그 절댓값으로 나누면 최종적으로 -1, 1, 0 중 하나의 값이 반환됩니다.

단, 두 요소가 정확히 같아서 diff가 0이 되는 경우 diff / Math.abs(diff)는 NaN이 되므로, 실무에서는 이 경우를 별도로 처리해 주는 것이 안전합니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

-11
-7
33
-33
34
28
-53
39
19
1