JavaScript에서 2개의 배열이 같은지 확인하는 빠른 방법
3874 단어 es6webdevprogrammingjavascript
const a = [1,2];
const b = [1,2];
if (a === b) console.log('Equal!');
이것을 시도했다면
a === b
가 매번 false를 반환한다는 것을 알고 있습니다.*왜 그런 겁니까? *
배열 변수는 값이 아닌 참조로 할당되기 때문입니다.
따라서
a
는 메모리 어딘가에 있는 [1,2]
의 위치를 가리키는 포인터일 뿐입니다.'b'는 메모리의 다른 위치에 대한 또 다른 포인터이지만 저장 중일 수도 있습니다
[1,2]
.if
a === b
를 확인할 때 실제로 멤버 위치를 확인하는 것이지 가리키는 값이 아닙니다.그래서 무엇을 제공합니까?
요소별로 비교할 필요 없이
a
와 b
로 표시되는 기본 배열이 동일한지 쉽게 확인할 수 있는 방법이 있습니까?여기에 빠른 속임수가 있습니다 ...
const d = [1,2,4,5,6];
const c = [1,2,4,5,6];
if (JSON.stringify(d) === JSON.stringify(c)) console.log('Equal!');
이것이 작동하는 이유는 무엇입니까?
어쨌든
JSON.stringify(...)
는 무엇입니까?JSON.stringify(...)
는 배열(또는 객체)을 가져와 해당 문자열 표현을 반환합니다.문자열화되어 있습니다!
예를 들어:
JSON.stringify([7,8,9])
그냥 돌아갑니다
'[7,8,9]'
. 값은 문자열이므로 JSON.stringify(...)
가 포함된 문자열로 반환되는 다른 배열의 값과 비교할 수 있습니다. :)이 트릭은 이중 배열(및 일반적으로 다차원 배열)에서도 작동합니다. 각 개체의 속성이 동일한 순서로 있는 한 이러한 방식으로 개체를 비교할 수도 있습니다.
또 다른 팁
순서에 관계없이 2개의 배열에 동일한 값이 포함되어 있는지 비교하려면
Array.sort()
방법을 사용하여 두 배열을 먼저 정렬한 다음 JSON.stringify
를 사용하여 비교하십시오!이 기사가 마음에 드셨다면 제 블로그를 확인해주세요.
Indepth JavaScript 더 통찰력 있는
콘텐츠. 🤓
Reference
이 문제에 관하여(JavaScript에서 2개의 배열이 같은지 확인하는 빠른 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/apmfree78/quick-way-to-check-if-2-arrays-are-equal-in-javascript-4ldl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)