#js数组去重#
前几天看了篇js数组去重的文章,总结了几个代码少、效率最高的方法,今天分享一下。
es6-new Set( )
let arr1 = [1, 3, 5, 7];
let arr2 = [2, 4, 5, 7];
console.log(Array.from(new Set([...arr1, ...arr2])));//输出[1, 3, 5, 7, 2, 4]
如果只有一个数组:
let arr = [1, 3, 5, 7, 3, 5];
console.log(Array.from(new Set(arr)));//输出[1, 3, 5, 7]
根据前一项跟后一项对比,不相同则添加到新数组
let arr1 = [1, 3, 5, 7];
let arr2 = [2, 4, 5, 7];
let arrAll = arr1.concat(arr2);
let result = [];
arrAll = arrAll.sort();
for (let i = 0; i < arrAll.length; i++) {
if(arrAll[i] !== arrAll[i-1]) {
result.push(arrAll[i])
}
};
console.log(result);//输出[1, 3, 5, 7, 2, 4]
如果只有一个数组:
let arr = [1, 3, 5, 7, 3, 5];
let result = [];
arr = arr.sort();
for (let i = 0; i < arr.length; i++) {
if(arr[i] !== arr[i-1]) {
result.push(arr[i])
}
};
console.log(result);//输出[1, 3, 5, 7]
下面这个则是效率最高的方法,优于new Set( )
let arr1 = [1, 3, 5, 7];
let arr2 = [2, 4, 5, 7];
let arrAll = arr1.concat(arr2);
let result = [];
let obj = {};
for (let i of arrAll) {
if(!obj[i]) {
result.push(i);
obj[i] = 1;//此处貌似不等于0,返回结果的结果都是正常的
}
}
console.log(result)//输出[1, 3, 5, 7, 2, 4]
如果只有一个数组:
let arr = [1, 3, 5, 7, 3, 1];
let result = [];
let obj = {};
for (let i of arr) {
if(!obj[i]) {
result.push(i);
obj[i] = 1;
}
}
console.log(result)//输出[1, 3, 5, 7, 2, 4]