JavaScript数组去重六种方法
var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5];
//方法一,循环遍历,第i项与后面所有的项对比,有重复则删除
function removeDuplicatedItem(arr) {
for(var i = 0; i < arr.length-1; i++){
for(var j = i+1; j < arr.length; j++){
if(arr[i]==arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr;
}
方法二;借助indexOf方法判断此元素在该数组中首次出现的位置下标与循环的下标是否相等
function removeDuplicatedItem(arr){
for(var i=0;i<arr.length;i++){
if(arr.indexOf(arr[i]) != i){
arr.splice(i,1);
i--;
}
}
return arr;
}
方法三:借用新数组
function removeDuplicateItem(arr){
var arrNew = [];
for(var i =0;i<arr.lenth;i++){
if(arr.indexOf(arr[i] == i)){
arrNew.push(arr[i]);
}
}
return arrNew;
}
方法四:set
Let set = new Set(arr);
Var arrNew = […set];
方法五、
/*
* 给传入数组排序,排序后相同值相邻,
* 然后遍历时,新数组只加入不与前一值重复的值。
* 会打乱原来数组的顺序
* */
function uniq(array){
array.sort();
var temp=[array[0]];
for(var i = 1; i < array.length; i++){
if( array[i] !== temp[temp.length-1]){
temp.push(array[i]);
}
}
return temp;
}
var aa = [1,2,"2",4,9,"a","a",2,3,5,6,5];
console.log(uniq(aa));
方法六、利用object对象key的唯一性,这种方法效率比indexof高