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

JavaScript로 두 개의 2차원 배열 동등성 비교하기


이번 글에서는 두 개의 2차원 배열을 인자로 받아, 두 배열이 서로 같은지 여부에 따라 불리언(Boolean) 값을 반환하는 JavaScript 함수를 작성해 보겠습니다.

여기서 말하는 '배열의 동등성'은 각 위치에 대응되는 요소들이 모두 같은지를 기준으로 판단합니다.

즉, 두 배열은 행(row)과 열(column)의 개수가 서로 동일해야 하며, 다음 조건을 만족해야 합니다.

arr1[i][j] === arr2[i][j]

위 표현식은 i가 [0, 행의 개수) 범위, j가 [0, 열의 개수) 범위 내의 모든 값에 대해 true를 반환해야 합니다.

예제

그럼 이 함수의 코드를 직접 작성해 보겠습니다.

const arr1 = [
    [1, 1, 1],
    [2, 2, 2],
    [3, 3, 3],
];
const arr2 = [
    [1, 1, 1],
    [2, 2, 2],
    [3, 3, 3],
];
const areEqual = (first, second) => {
    const { length: l1 } = first;
    const { length: l2 } = second;
    if(l1 !== l2){
        return false;
    };
    for(let i = 0; i < l1; i++){
        for(let j = 0; j < first[i].length; j++){
            if(first[i][j] !== second[i][j]){
                return false;
            };
        };
    };
    return true;
};
console.log(areEqual(arr1, arr2));

코드 설명

함수는 먼저 두 배열의 행(row) 개수를 비교하여, 개수가 다르면 더 이상 검사할 필요 없이 즉시 false를 반환합니다. 이후 이중 for 루프를 사용해 각 행의 요소를 하나씩 순회하면서 대응되는 요소를 비교합니다. 순회 중 단 하나의 요소라도 일치하지 않으면 바로 false를 반환하며, 모든 요소가 일치할 경우에만 최종적으로 true를 반환합니다. 불일치가 발견되는 즉시 종료되므로 불필요한 연산 없이 효율적으로 동작합니다.

출력 결과

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

true