[JS] 배열를 비교하는 법

bepyan·2021년 6월 24일
1
post-thumbnail
post-custom-banner

👓 배열 비교

Javascript에서 객체를 === 비교하면 안댄다!

const arr1 = [1,2,3], arr2 = [1,2,3];
console.log(arr1 === arr2)

결과는 false (⊙_⊙;)
JS에서 Array도 객체이기 때문.

깔끔한 솔루션

배열을 string으로 변환한다.

// 방법 1
console.log(JSON.stringify(arr1) === JSON.stringify(arr2))

// 방법 2
console.log(arr1.join('') === arr2.join(''))

동작 과정 array → string → 문자열 비교
따라서 사실 전통적으로 하나하나 비교하는 것이 더 빠르다.
허나 빠르게 알고리즘을 적용하려면 코드도 짧고 이렇게하는게 깔끔하다.

전통적 솔류션

프로젝트를 할 때는 이렇게 따로 util를 만들어 두는 것이 좋을 것 같다.

// 커스텀 프로토타입을 설정하기.
Array.prototype.equals = function (getArray) {
    if (this.length != getArray.length) return false;

    for (var i = 0; i < getArray.length; i++) {
        if (this[i] instanceof Array && getArray[i] instanceof Array) {
            if (!this[i].equals(getArray[i])) {
                return false;
            }
        } else if (this[i] != getArray[i]) {
            return false;
        }
    }
    return true;
};
console.log([1,2,3].equals([1,2,3])) // true
// 일반적인 배열 순회
function arraysEqual(a, b) {
  if (a === b) return true;
  if (a == null || b == null) return false;
  if (a.length !== b.length) return false;

  for (var i = 0; i < a.length; ++i)
    if (a[i] !== b[i]) return false;

  return true;
}
console.log(arraysEqual([1,2,3], [1,2,3])) // true

🕶 배열이 같은 요소를 포함하는지 비교 (순서 X)

배열을 미리 정렬시키면 된다.

const arr1 = [1,2,3], arr2 = [2,1,3];
arr1.sort();
arr2.sort();
// 위에 있는 비교 알고리즘 사용

Map과 Set을 활용할 수도 있지만
~ 다양한 응용 방법에 관해서는 추후에 계속 업데이트 하자.


참고한 링크

profile
쿠키 공장 이전 중 🚛 쿠키 나누는 것을 좋아해요.
post-custom-banner

0개의 댓글