JavaScript/배열

[JavaSciprt]배열을 비교하는 방법

DevStory 2021. 11. 29.

이번 포스팅에서는 JavaScript에서 두 개의 배열을 비교하는 방법을 소개합니다.

 


Array.prototype.every()

배열의 every() 함수를 사용하여 배열의 모든 요소가 비교 대상의 배열에도 존재하는지 확인할 수 있습니다.

 

길이가 동일하고 한 배열의 각 요소가 비교 대상의 배열에도 존재하면, 두 배열은 동일하다고 할 수 있습니다.

const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];

const sameArray = arr1.length === arr2.length && arr1.every((value, idx) => value === arr2[idx]);

console.log(sameArray); // true

배열 arr1와 arr2를 비교하기 위해 우선 길이가 동일한지 체크합니다.

 

그리고 every() 함수의 callback 함수를 이용하여 value와 arr2[idx]를 비교합니다.

 

value와 idx는 배열 arr1을 순회하여 가져온 값과 인덱스입니다.

 

※ 1차원 배열에서만 비교할 수 있습니다.


Lodash의 isEqual() 함수

Lodash의 isEqual() 방법을 사용하여 2개의 배열을 비교할 수 있습니다.

const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];

const sameArray = _.isEqual(arr1, arr2);

console.log(sameArray); // true

비교하려는 두 배열을 인수로 전달하기만 하면 되며, 중첩 배열도 비교할 수 있습니다.


JSON.stringify()

또 다른 방법으로는 JSON.stringify() 함수를 사용하여 두 배열을 비교할 수 있습니다.

 

JSON.stringify() 함수는 배열을 문자열로 변환하여, 문자열로 변환된 배열을 이용하여 비교합니다.

const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];

const sameArray = JSON.stringify(arr1) === JSON.stringify(arr2); 

console.log(sameArray); // true

JSON.stringify() 함수를 사용하면, 중첩 배열도 비교할 수 있습니다.

 

하지만, 큰 배열을 비교해야 하는 경우 문자열로 변환하는 과정에서 리소스를 많이 사용하므로 느리다는 단점이 존재합니다.


정리

1차원 배열을 비교하는 경우 every() 함수를 사용하는 것이 좋습니다.

 

중첩된 배열을 비교하는 경우에는 Lodash의 isEqual() 함수와 JSON.stringify() 함수를 사용할 수 있습니다.

 

쉬운 방법은 JSON.stringify() 함수를 사용하는 것이지만, 중첩된 배열의 크기가 큰 경우에는 Lodash의 isEqual() 함수를 사용하는 것을 권장합니다.

반응형

댓글