最基本的去重方法
思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。
var arr1=[1,2,3,2,1];
function unique1(arr){
var res = [arr1[0]];
for(var i=1;i<arr1.length;i++){
var repeat = false;
for(var j=0;j<res.length;j++){
if(arr1[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr1[i]);
}
}
return res;
}
console.log(unique1(arr1));
先排序在去重
思路:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组
var arr2=[1,2,3,2,1];
function unique2(arr){
var arr2 = arr.sort();
var res = [arr2[0]];
for(var i=1;i<arr2.length;i++){
if(arr2[i] !== res[res.length-1]){
res.push(arr2[i]);
}
}
return res;
}
console.log(unique2(arr2));
利用对象的属性去重(推荐)
思路:每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复
var arr3=[1,2,3,4,5,4,3,2,1];
function unique3(arr3){
var res =[];
var json = {};
for(var i=0;i<arr3.length;i++){
if(!json[arr3[i]]){
res.push(arr3[i]);
json[arr3[i]] = 1;
}
}
return res;
}
console.log(unique3(arr3));
利用下标查询
var arr4=[1,2,3,4,5,4,3,2,1];
function unique4(arr){
var newArr = [arr4[0]];
for(var i=1;i<arr4.length;i++){
if(newArr.indexOf(arr4[i]) == -1){
newArr.push(arr4[i]);
}
}
return newArr;
}
console.log(unique4(arr4));
ES6的方法
let arr1=([1,1,2,3]);
let newArr1=Array.from(new Set(arr1));
console.log(newArr1);
let arr2 = [1,2,3,3];
let newArr2 = [...new Set(arr2)];
console.log(newArr2);
let arr3 = [1, 2, 3, 2, 1];
function newArr3(arr3){
return Array.from(new Set(arr3));
}
console.log(newArr3(arr3));
网友评论