小白一个,数组去重是一个很古老但是很重眼的话题了,话不多说,开始......
第一种方法---------利用indexof来检索
利用新数组indexOf老数组里面每个元素,来判断是不是已经在新数组中存在 -1表示没有。
function abc(arr){
var newarr=new Array();
for(var i=0;i<arr.length;i++;){
if( newarr.indexof ( arr[i]) ==-1){
newarr.push( arr[i] )
}
}
return newarr
}
console.log(abc([1,2,2,4,9,6,7,5,2,3,5,6,5]))
第二种方法---------利用相邻元素来对比,但是还需要排序下
function ab(list){
var list=list.sort();
var newlist=[list[0]];
for(var i=1;i<list.length;i++){
if(list[i]!=newlist[newlist.length-1]){
newlist.push(list[i])
}
}
return newlist
}
console.log(ab([0,0,1,2,'abc',1,3,4,5,'e','d','g',6,4,7,9,10,12,11]))
function abc(array){
array.sort();
var new=[array[0]];
for(var i = 1; i < array.length; i++){
if( array[i] !== new[new.length-1]){
new.push(array[i]);
}
}
return new;
}
var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
console.log(abc(aa));
第三种-----------es6
new Set()以及array.from()
let countsset=new Set(arr); //es6 语法顺利的将数组去重,但是现在返回的是一个集合了
let countarray=Array.from(countsset); //这是将集合转化为数组,一个转化后的新数组
第四种 -------------------es6
function ab(list){
var newlist=[];
var list=list;
for(var i=0;i<list.length;i++){
if(newlist.includes(list[i])==false){
newlist.push(list[i])
}
}
return newlist
}
console.log(ab([0,0,1,2,1,3,4,5,6,4,7,9,10,12,11]))
function unique(arr){
var res = [];
for(var i=0; i<arr.length; i++){
if( !res.includes(arr[i]) ){
res.push(arr[i]);
}
}
return res;
}
console.log(unique([1,1,2,3,5,3,1,5,6,7,4]));
第五种
function unique(arr){
var res = [];
arr.forEach(function(item){
res.includes(item) ? '' : res.push(item);
});
return res;
}
console.log(unique([1,1,2,3,5,3,1,5,6,7,4]));