몸과 마음이 건전한 SW 개발자

자바스크립트 [배열 비교] 본문

개발 언어 입문/자바스크립트 문법

자바스크립트 [배열 비교]

스위태니 2024. 3. 17. 02:27

문제 발견

  • 파이썬의 경우 배열을 직접 비교하는 것이 가능하다.
  • 자바스크립트는 직접 비교할 경우 빈 배열이라고 할지라도 false를 반환한다.

파이썬 코드

A = [1, 2, 3]
B = [1, 2, 3]
C = [1, 2]
print(A == B, A == C) # True False

자바스크립트 코드

const lstA = [1, 2, 3]
const lstB = [1, 2, 3]
const lstC = [1, 2, 4]
const lstD = [3, 2, 1]
const lstE = [1, 2]
console.log(lstA == lstA) // true
console.log(lstA == lstB) // false
console.log(lstA != lstB) // true

// every 함수를 사용해서 비교
// 정렬도 되어있어야 한다.
console.log(lstA.every((e, idx) => e == lstB[idx])) // true
console.log(lstA.every((e, idx) => e == lstC[idx])) // false
console.log(lstA.every((e, idx) => e == lstD[idx])) // false
console.log(lstA.every((e, idx) => e == lstE[idx])) // false

// 튜플 형태로 비교는 가능하더라
// 하지만 길이가 달라도 똑같다고 판단한다.
const testA = 10
const testB = 10
const testC = 10
const testD = 10
const testE = 10
const testF = 20
console.log((testA, testB) == (testC, testD)) // true
console.log((testA, testB) == (testE, testF)) // false
console.log((testA == testC && testB == testD)) // true
console.log((testA == testE && testB == testF)) // false
console.log((testA, testB, testC) == (testD, testE)) // true 주의