이 기사에서는 주로 JS 배열 중복 제거 방법을 요약하여 공유합니다. 이 방법이 모두에게 도움이 되기를 바랍니다.
가장 쉬운 방법:
?
1
2
3
4
5 6
7
8
9
10
11
12
13
14
15
16
17
18 |
var arr=[2,8,5,0,5,2,6,7,2]; function Unique1(arr){ var hash=[]; for ( var i = 0; i < arr.length; i++) { if(hash.indexOf(arr[i])==-1){ hash.push(arr[i]); } } 반환 해시;
} |
방법 1:
이중 레이어 루프, 외부 루프 요소, 내부 루프 중 값 비교
같은 값이 있으면 건너뛰고, 없으면 배열로 푸시합니다
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Array.prototype.distinct = function (){
var arr = this ,
result = [],
i,
j,
len = arr.length;
for (i = 0; i < len; i++){
for (j = i + 1; j < len; j++){
if (arr[i] === arr[j]){
j = ++i;
}
}
result.push(arr[i]);
}
return result;
}
var arra = [1,2,3,4,4,1,1,2,1,1,1];
arra.distinct();
|
방법 2: 스플라이스를 사용하여 원본 배열에서 직접 작업
이중 레이어 루프, 외부 루프 요소, 내부 루프 중 값 비교
값이 동일하면 값 삭제
참고: 요소 삭제 그 후에는 배열 길이를 1씩 줄여야 합니다.
8
9
10
11
12
13
14
15
16
17
18
19
Array.prototype.distinct = function (){
var arr = this ,
i,
j,
len = arr.length;
for (i = 0; i < len; i++){
for (j = i + 1; j < len; j++){
if (arr[i] == arr[j]){
arr.splice(j,1);
len--;
j--;
}
}
}
return arr;
};
var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];
var b = a.distinct();
console.log(b.toString());
| 장점: 간단하고 이해하기 쉬움
단점: 메모리 사용량이 많고 속도가 느림
방법 3: 동일할 수 없는 개체의 속성을 사용하여 중복 제거
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Array.prototype.distinct = function (){
var arr = this ,
i,
obj = {},
result = [],
len = arr.length;
for (i = 0; i< arr.length; i++){
if (!obj[arr[i]]){
obj[arr[i]] = 1;
result.push(arr[i]);
}
}
return result;
};
var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];
var b = a.distinct();
console.log(b.toString());
|
방법 4: 배열의 재귀적 중복 제거
재귀적 아이디어 사용
먼저 정렬한 다음 끝부터 비교하여 동일하면 삭제합니다
?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Array.prototype.distinct = function (){
var arr = this ,
len = arr.length;
arr.sort( function (a,b){
return a - b;
})
function loop(index){
if (index >= 1){</span></strong></span></span></p>
<p class="line number9 index8 alt2" style="line-height:15.4px;margin:0px;padding:0px 1em;background-image:none;border:0px;float:none;height:auto;vertical-align:baseline;width:auto;min-height:auto;white-space:pre;"><code class="js spaces" style="margin:3px auto 0px;padding:0px 0px 0px 5px;background:rgb(255,255,255);border-left:3px solid rgb(108,226,108);width:640px;font-size:14px;clear:both;border-top:0px;border-right:0px;border-bottom:0px;float:none;height:auto;vertical-align:baseline;font-family:Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace;min-height:auto;"> if (arr[index] === arr[index-1]){
arr.splice(index,1);
}
loop(index - 1);
}
}
loop(len-1);
return arr;
};
var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];
var b = a.distinct();
console.log(b.toString());
|
방법 5: indexOf 및 forEach 사용
?
1
2
3
4
5
6 7
8
9
10
11
12
13
14
15
|
Array.prototype.distinct = function (){
var arr = this ,
result = [],
len = arr.length;
arr.forEach( function (v, i ,arr){
var bool = arr.indexOf(v,i+1);
if (bool === -1){
result.push(v);
}
})
return result;
};
var a = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3];
var b = a.distinct();
console.log(b.toString());
|
방법 6: ES6의 set
Set 데이터 구조를 사용합니다. 이는 배열과 유사하며 해당 멤버의 값은 모두 고유합니다.
Array.from을 사용하여 Set 구조를 배열로 변환
?
1
2
3
4
|
function dedupe(array){
return Array.from( new Set(array));
}
dedupe([1,1,2,3])
|
스프레드 연산자(...)는 내부적으로 for...of 루프를 사용합니다
1
23
|
let resultarr = [... new Set(arr)];
console.log(resultarr);
|
다음은 배열 병합 및 중복 제거 방법에 대한 보충 소개입니다
1. concat() 메서드
아이디어: concat() 메서드는 들어오는 배열 또는 배열이 아닌 값을 원래 배열을 형성하여 새 배열이 반환됩니다. 이 방법은 새로운 배열을 생성합니다.
1
2
3
4
5
|
function concatArr(arr1, arr2){
var arr = arr1.concat(arr2);
arr = unique1(arr);
return arr;
}
|
2. Array.prototype.push.apply()
아이디어: 이 방법의 장점은 새 배열을 생성하지 않는다는 것입니다.
?
1
2
3
4
5
6
7
8
9
10
|
var a = [1, 2, 3]; var a = [1, 2, 3];
var b = [4, 5, 6];
Array.prototype.push.apply(a, b);
var b = [4, 5, 6];
Array.prototype.push.apply(a, b);🎜
🎜
function concatArray(arr1,arr2){
Array.prototype.push.apply(arr1, arr2);
arr1 = unique1(arr1); Related Related 권장 사항 : 6 JS Sharing의 Array 중복 제거 예제 6 JS 배열 중복 제거 메소드 javaScript 배열 중간 복제의 여러 방법을 공유합니다. |
위 내용은 JS 배열 중복 제거 방법 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!