1.双for循环形式、splice
思路:将数组中的值一个个的比较,重复的就删掉
function remove(array){
for(var i=array.length-1; i>=1; i--){
for(var j=i-1; j>=0; j--){
if(array[j]==array[i])
array.splice(j,1);
}
}
return array;
}
a=[1,1,2,2,2,3,4,5];
remove(a); // [1,2,3,4,5]
2.indeOf、push
思路:设置一个新数组,根据indexOf筛选原数组,只要新数组中没有的,就push到新数组中
function remove(array){
var newArray=[];
for(var i=0; i<array.length; i++){
if(newArray.indexOf(array[i]==-1)){
newArray.push(array[i]);
}
}
return newArray;
}
a=[1,1,2,3,3,4];
remove(a); // [1,2,3,4]
3. 先排序再去重
思路:先将原数组排序,再与相邻的进行比较,如果不同则存入新数组
funtion unique(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;
}
4.es6 Set、Array.from方法
思路:
1.Set函数可以接受一个数组(或者类似数组的对象)作为参数,用来初始化,其成员的值都是唯一的,没有重复的值。
2.Array.from()方法可以将类数组对象和可遍历的对象转化为真正的数组。
function remove(a){
return Array.from(new Set(a));
}
a=[1,2,3,3,3,2,4,5,5];
remove(a); //[1,2,3,4,5]