JavaScript: 배열에 중복 값이 있는지 확인하는 방법
4081 단어 tutorialjavascript
JavaScript에서 값 배열을 처리할 때 배열에 중복 값이 포함되어 있는지 확인하고 싶을 때가 있습니다. 불행히도 JavaScript 배열은 우리를 위해 이것을 할 수 있는 내장 메소드를 노출하지 않습니다. 우리가 직접 구현을 작성해야 합니다.
이 문제에 대한 한 가지 접근 방식은 다음과 같습니다.
function checkForDuplicates(array) {
let valuesAlreadySeen = []
for (let i = 0; i < array.length; i++) {
let value = array[i]
if (valuesAlreadySeen.indexOf(value) !== -1) {
return true
}
valuesAlreadySeen.push(value)
}
return false
}
이것은 작동하지만 배열의 끝에서 유일한 중복 값이 발생하는 최악의 시나리오에서는 성능이 뛰어난 접근 방식이 아닙니다. 우리는 배열에 실제로 고유하지 않은 값이 있다는 것을 마지막 요소에서 깨닫기 위해서만 전체 배열(매우 클 수 있음)을 반복해야 합니다.
최근에 배운 또 다른 접근 방식은 ES6 세트의 힘을 활용하는 것입니다.
JavaScript의 Sets에 익숙하지 않은 경우 (최근까지 몰랐습니다!), here is the MDN definition :
Set
objects are collections of values. You can iterate through the elements of a set in insertion order. A value in theSet
may only occur once; it is unique in theSet
's collection.
마지막 줄을 한 번 더 읽으십시오. 이것이 우리의 비밀 소스입니다. '
Set
의 값은 한 번만 발생할 수 있습니다. Set
의 컬렉션에서 유일합니다.'이 사실은 원래 배열을
Set
로 변환한 다음 고유한 값만 포함한다고 확신할 수 있음을 의미합니다. 배열에서 고유한 값을 모두 추출하여 Set
에 저장하면 배열과 Set의 길이를 비교할 수 있습니다. 길이가 같지 않으면 배열에 중복 값이 포함되어 있어야 합니다!그 접근 방식은 다음과 같습니다.
function checkForDuplicates(array) {
return new Set(array).size !== array.length
}
Set
길이와 배열이 같지 않으면 이 함수는 true
를 반환하여 배열에 중복 항목이 포함되어 있음을 나타냅니다. 그렇지 않고 배열과 Set
길이가 같은 경우 함수는 false
를 반환하고 원래 배열에 중복 값이 포함되어 있지 않음을 확신할 수 있습니다!나는 이 두 번째 접근 방식이 얼마나 간결하고 표현력이 좋은지 정말 좋아하지만you might run into browser support issues if you need to target older browsers 이를 고려하십시오!
Reference
이 문제에 관하여(JavaScript: 배열에 중복 값이 있는지 확인하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/will_devs/javascript-how-to-check-if-an-array-has-duplicate-values-cha텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)