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 중국어 웹사이트의 기타 관련 기사를 참조하세요!