JavaScript의 배열에서 중복 값 제거
중복 항목이 포함될 수 있고 다음 항목만으로 새 배열을 생성해야 하는 배열을 다루고 있습니까? 독특한 가치는? 다음은 이 일반적인 문제를 해결하기 위한 다양한 접근 방식이 포함된 포괄적인 가이드입니다.
TL;DR: ES6 Set and Spread 구문 사용
const uniq = [...new Set(array)];
"스마트" 그러나 순진한 접근법(2차 Time)
const uniqueArray = a.filter((item, pos) => a.indexOf(item) === pos);
구조를 위한 해시 테이블(선형 시간)
const uniq = (a) => { const seen = {}; return a.filter((item) => { return seen.hasOwnProperty(item) ? false : (seen[item] = true); }); };
두 세계의 최고(선형) 시간)
const uniq = (a) => { const prims = { boolean: {}, number: {}, string: {} }, objs = []; return a.filter((item) => { const type = typeof item; if (type in prims) { return prims[type].hasOwnProperty(item) ? false : (prims[type][item] = true); } else { return objs.indexOf(item) >= 0 ? false : objs.push(item); } }); };
정렬 및 필터링(선형 시간)
const uniq = (a) => { return a.sort().filter((item, pos, ary) => !pos || item !== ary[pos - 1]); };
키별 고유(기준에 따른 필터링) 콜백)
const uniqBy = (a, key) => { const seen = {}; return a.filter((item) => { const k = key(item); return seen.hasOwnProperty(k) ? false : (seen[k] = true); }) };
첫 번째 또는 마지막 발생 보존(Set 또는 Map 사용)
const uniqByKeepFirst = (a, key) => { const seen = new Set(); return a.filter((item) => { const k = key(item); return seen.has(k) ? false : seen.add(k); }); }; const uniqByKeepLast = (a, key) => { return [...new Map(a.map((x) => [key(x), x]))].values(); };
배열 유형에 맞는 접근 방식 선택 및 성능 요구 사항.
위 내용은 JavaScript 배열에서 중복 값을 효율적으로 제거하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!