방법: 1. "[...new Set(arr)]" 문을 사용합니다. 2. "Array.from(new Set(arr))" 문을 사용합니다. 3. 필터 및 indexOf 함수를 사용합니다. . double을 사용한다. for 루프는 값이 중복되었는지 확인하고, 중복된 값이 있으면 push()를 사용하여 삭제한다.
이 튜토리얼의 운영 환경: Windows 7 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.
방법 1: […new Set(arr)]
const arr = [1, 2, 3, 2, 3]; [...new Set(arr)]; // [1, 2, 3]
방법 2: Array.from(new Set(arr))
const arr = [1, 2, 3, 2, 3]; Array.from(new Set(arr)); // [1, 2, 3]
Set의 요소는 고유하므로 원래 값인지 여부 또는 개체 참조이므로 배열을 Set 개체로 변환하여 중복 제거를 수행할 수 있습니다. Array.from 메서드는 Set 개체를 배열로 변환할 수 있습니다.
방법 3: 필터+ indexOf 사용function unique(arr) {
return arr.filter(function(item, index, arr) {
//当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素
return arr.indexOf(item, 0) === index;
});
}
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
console.log(unique(arr))
//[1, "true", true, 15, false, undefined, null, "NaN", 0, "a", {…}, {…}]
가장 이해하기 쉬운 방법은 외부 루프는 요소를 순회하고 내부 루프는 중복이 있는지 확인합니다
중복 값, push() 또는 splice()를 사용할 수 있습니다
function distinct(a, b) { let arr = a.concat(b); for (let i=0, len=arr.length; i<len; i++) { for (let j=i+1; j<len; j++) { if (arr[i] == arr[j]) { arr.splice(j, 1); // splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一 len--; j--; } } } return arr }
하지만 이 방법은 메모리를 많이 차지하고 효율성이 가장 낮습니다
방법 5: for...of + include()이중 for 루프의 업그레이드 버전입니다. for...of 문을 사용하여 외부 레이어의 for 루프를 교체하고 내부 루프를 include()로 변경합니다.
먼저 include()가 false를 반환할 때 빈 배열을 만듭니다. , 빈 배열에 push 요소를 추가하세요
마찬가지로 indexOf()를 사용하여 include()
function distinct(a, b) { let arr = a.concat(b) let result = [] for (let i of arr) { !result.includes(i) && result.push(i) } return result }
를 대체할 수도 있습니다. 【추천 학습:
javascript 고급 튜토리얼위 내용은 자바스크립트 배열에서 중복을 제거하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!