이번에는 JS에서 중복된 배열 요소를 삭제하는 방법과 JS에서 중복된 배열 요소를 삭제하는 주의 사항에 대해 소개하겠습니다. 실제 사례를 살펴보겠습니다.
js에서 배열 중복 제거를 구현하는 방법에 대한 5가지 방법과 데모 및 소스 코드가 첨부되어 있습니다.
1.배열 탐색method
중복을 제거하는 가장 간단한 방법,
구현 아이디어: 새 배열을 만들고, 들어오는 배열을 순회하고, 새 배열에 없는 경우 값을 추가합니다. 참고: 값이 배열에 있는지 확인하는 "indexOf" 메서드는 ECMAScript5 메서드입니다. IE8 이하에서는 지원되지 않습니다. 더 낮은 버전의 브라우저와 호환되는 코드를 작성하세요.
// 最简单数组去重法 function unique1(array){ var n = []; //一个新的临时数组 //遍历当前数组 for(var i = 0; i < array.length; i++){ //如果当前数组的第i已经保存进了临时数组,那么跳过, //否则把当前项push到临时数组里面 if (n.indexOf(array[i]) == -1) n.push(array[i]); } return n; } // 判断浏览器是否支持indexOf ,indexOf 为ecmaScript5新方法 IE8以下(包括IE8, IE8只支持部分ecma5)不支持 if (!Array.prototype.indexOf){ // 新增indexOf方法 Array.prototype.indexOf = function(item){ var result = -1, a_item = null; if (this.length == 0){ return result; } for(var i = 0, len = this.length; i < len; i++){ a_item = this[i]; if (a_item === item){ result = i; break; } } return result; } }
2. 객체 키-값 쌍 방법
이 방법은 다른 방법보다 빠르게 실행되지만 더 많은 메모리를 차지합니다.
구현 아이디어: 새 js 개체와 새 배열을 만듭니다. 들어오는 배열을 탐색할 때 값이 js 개체의 키인지 확인합니다. 그렇지 않은 경우 키를 개체에 추가하고 새 배열에 넣습니다. 메모: js 객체 키인지 여부를 결정할 때 "toString()"은 수신 키에서 자동으로 실행됩니다. 예를 들어 a[1], a["1"] . 위의 문제를 해결하려면 여전히 "indexOf"를 호출해야 합니다. rreee
3. 배열 첨자 판단 방법 여전히 "indexOf"를 호출해야 하며 성능은 방법 1과 거의 동일합니다.
구현 아이디어
: 현재 배열에서 i번째 항목이 처음 나타나는 경우 현재 배열의 i가 아닌 경우 i번째 항목이 중복되어 무시된다는 의미입니다. 그렇지 않으면 결과 배열을 저장합니다. rreee
4. 정렬된 이웃 제거 방법 네이티브 배열의 "정렬" 방법의 정렬 결과는 그다지 신뢰할 수 없지만 순서에 주의를 기울이지 않는 중복 제거에는 이러한 단점이 영향을 미치지 않습니다.
구현 아이디어
: 들어오는 배열을 정렬합니다. 정렬 후에는 동일한 값이 인접해 있으며, 순회할 때 이전 값과 중복되지 않는 값만 새 배열에 추가합니다. rreee
5. 배열 순회 방법 최적화 외국 블로그 게시물에 따르면 이 메서드의 구현 코드가 꽤 멋지네요.
구현 아이디어
: 중복 없이 가장 오른쪽의 값을 가져와 새 배열에 넣습니다. (중복된 값이 감지되면 현재 루프가 종료되고 최상위 루프의 다음 라운드 판단이 시작됩니다.) // 速度最快, 占空间最多(空间换时间)
function unique2(array){
var n = {}, r = [], len = array.length, val, type;
for (var i = 0; i < array.length; i++) {
val = array[i];
type = typeof val;
if (!n[val]) {
n[val] = [type];
r.push(val);
} else if (n[val].indexOf(type) < 0) {
n[val].push(type);
r.push(val);
}
}
return r;
}
추천 자료:
laravel5.3 vue를 사용하여 즐겨찾기 기능 만들기vue.js 데이터 전송 및 데이터 배포 단계에 대한 자세한 설명위 내용은 JS의 배열에서 중복 요소를 삭제하는 방법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!