>웹 프론트엔드 >JS 튜토리얼 >JavaScript 배열에서 고유한 값을 효율적으로 찾고 반환하는 방법은 무엇입니까?

JavaScript 배열에서 고유한 값을 효율적으로 찾고 반환하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-28 10:24:10963검색

How to Efficiently Find and Return Unique Values in a JavaScript Array?

JavaScript 배열에서 고유한 값 찾기

JavaScript에서 배열을 처리할 때 고유성을 보장하기 위해 중복된 값을 제거하는 것이 바람직한 경우가 많습니다. 다음은 JavaScript 배열에서 발생하는 일반적인 문제입니다.

var numbers = [1, 2, 3, 4, 5, 1, 2];
numbers.getUnique(); // [1, 2, 3, 4, 5] (incorrectly includes 1 and 2)

제공된 프로토타입 메소드인 Array.prototype.getUnique는 중복 항목을 필터링하려고 시도하지만 0 값이 발견되면 실패합니다.

문제를 이해했다면 코드를 살펴보겠습니다.

Array.prototype.getUnique = function() {
  var o = {}, a = [], i, e;
  for (i = 0; e = this[i]; i++) {o[e] = 1};
  for (e in o) {a.push (e)};
  return a;
};

문제는 고유 값을 추적하는 데 사용되는 개체에 있습니다. 숫자가 o에 삽입되면 문자열로 변환됩니다. 그러나 0의 경우 이 변환은 빈 문자열 ''을 생성합니다.

따라서 두 번째 루프가 o를 반복할 때 빈 문자열을 키로 발견하고 이를 a 배열에 추가합니다. 이로 인해 중복 값이 ​​잘못 포함됩니다.

고유 값에 대한 올바른 솔루션

배열에서 고유 값을 정확하게 얻으려면 필터 메서드:

function onlyUnique(value, index, array) {
  return array.indexOf(value) === index;
}

// usage example:
var numbers = [1, 2, 3, 4, 5, 1, 2];
var unique = numbers.filter(onlyUnique);

console.log(unique); // [1, 2, 3, 4, 5]

이 함수는 배열에 있는 각 값의 인덱스를 현재 인덱스와 비교합니다. 인덱스가 일치하면 값이 고유하고 필터링된 배열에 포함된다는 의미입니다. 이 접근 방식을 사용하면 모든 중복 값이 ​​효과적으로 제거됩니다.

위 내용은 JavaScript 배열에서 고유한 값을 효율적으로 찾고 반환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.