JavaScript 배열로 작업할 때 중복 값을 제거해야 하는 경우가 많습니다. 원래 배열을 변경하지 않고 이를 달성하기 위해 여러 접근 방식을 사용할 수 있습니다.
가장 간단한 방법은 집합을 활용하는 것입니다. 생성자 및 스프레드 구문:
const uniq = [...new Set(array)];
이렇게 하면 배열에서 새 Set이 생성되어 자동으로 중복 항목이 제거됩니다. 그런 다음 스프레드 구문은 Set을 다시 배열로 변환합니다.
또 다른 옵션은 indexOf 메서드를 기반으로 배열을 필터링하는 것입니다.
const uniqueArray = a.filter(function(item, pos) { return a.indexOf(item) == pos; });
이 메서드는 배열을 반복하고 각 요소의 첫 번째 발생이 해당 위치와 일치하는지 확인합니다. 고유한 요소만 이 조건을 충족합니다.
효율성을 위해 객체를 사용한 해싱을 사용할 수 있습니다.
function uniq(a) { const seen = {}; return a.filter(function(item) { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); }
이 접근 방식은 해시 테이블을 유지하여 중복 값을 빠르게 확인하여 선형 시간을 보장합니다.
입력 배열이 정렬된 경우 이를 정렬한 다음 연속된 동일한 요소를 필터링하여 중복 항목을 제거할 수 있습니다.
function uniq(a) { return a.sort().filter(function(item, pos, ary) { return !pos || item != ary[pos - 1]; }); }
특정 기준에 따라 중복 항목을 필터링하려면 콜백 기능을 사용할 수 있습니다.
function uniqBy(a, key) { const seen = {}; return a.filter(function(item) { const k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }); }
키 콜백을 사용하면 사용자 정의 비교가 가능하고 더 복잡한 기준에 따라 중복 항목을 제거할 수 있습니다. logic.
특정 시나리오에서는 중복 요소의 첫 번째 또는 마지막 발생을 보존하는 것이 바람직할 수 있습니다.
function uniqByKeepFirst(a, key) { const seen = new Set(); return a.filter(item => { const k = key(item); return seen.has(k) ? false : seen.add(k); }); } function uniqByKeepLast(a, key) { return [ ...new Map( a.map(x => [key(x), x]) ).values() ] }
uniqByKeepFirst 함수는 Set을 활용하여 고유 키를 유지합니다. uniqByKeepLast는 Map을 사용하여 각 키와 관련하여 마지막으로 발견된 값을 보존합니다.
위 내용은 JavaScript 배열에서 중복 값을 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!