摘要:最基本的去重方法思路定義一個新數組,并存放原數組的第一個元素,然后將元素組一一和新數組的元素對比,若不同則存放在新數組中。利用將結構轉換成數組拓展運算符內部使用循環方法思路方法將傳入的數組或非數組值與原數組合并組成一個新的數組并返回。
1.最基本的去重方法
思路:定義一個新數組,并存放原數組的第一個元素,然后將元素組一一和新數組的元素對比,若不同則存放在新數組中。
function unique(arr){var res = [arr[0]];
for(var i=1;i
var repeat = false;
for(var j=0;j
if(arr[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res;
}
2.先排序在去重
思路:先將原數組排序,在與相鄰的進行比較,如果不同則存入新數組
function unique(arr){var arr2 = arr.sort();
var res = [arr2[0]];
for(var i=1;i
if(arr2[i] !== res[res.length-1]){
res.push(arr2[i]);
}
}
return res;
}
3.利用對象的屬性去重(推薦)
思路:每次取出原數組的元素,然后再對象中訪問這個屬性,如果存在就說明重復
function unique(arr){var res =[];
var json = {};
for(var i=0;i
if(!json[arr[i]]){
res.push(arr[i]);
json[arr[i]] = 1;
}
}
return res;
}
4.利用下標查詢
function unique(arr){
var newArr = [arr[0]];
for(var i=1;iif(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]); } } return newArr; }
5.利用es6
Set數據結構,它類似于數組,其成員的值都是唯一的。 利用Array.from將Set結構轉換成數組
function dedupe(array){ return Array.from(new Set(array)); }
dedupe([1,1,2,3]) //[1,2,3] 拓展運算符(...)內部使用for...of循環
let arr = [1,2,3,3]; let resultarr = [...new Set(arr)];
console.log(resultarr); //[1,2,3]
6.concat()方法
思路:concat() 方法將傳入的數組或非數組值與原數組合并,組成一個新的數組并返回。該方法會產生一個新的數組。
function concatArr(arr1, arr2){
var arr = arr1.concat(arr2);
arr = unique1(arr);//再引用上面的任意一個去重方法
return arr;
}
7.Array.prototype.push.apply()
思路:該方法優點是不會產生一個新的數組。
var a = [1, 2, 3]; var b = [4, 5, 6]; Array.prototype.push.apply(a,
b);
//a=[1,2,3,4,5,6] //等效于:a.push.apply(a, b); //也等效于[].push.apply(a,
b);
function concatArray(arr1,arr2){
Array.prototype.push.apply(arr1, arr2);
arr1 = unique1(arr1);
return arr1;
}
8.arr.filter()
var arr = [0,0,1,"a",1,2,"b","a","a"]; var res = arr.filter(function(ele,index,array){ return index === array.indexOf(ele); }); document.write(res);
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/113560.html
摘要:數組去重看了網上很多數組去重方法,用的比較常見的大概就幾種,今天想自己來做一個總結。還有就是方法返回的數組也是排序后的數組,某些情況下可能不符合要求。 JS數組去重 看了網上很多數組去重方法,用的比較常見的大概就幾種,今天想自己來做一個總結。部分內容參考該博客 1 . 在原數組上操作(基本方法) 思路:利用循環嵌套,判斷數組中每個元素與其后面的元素是否相等,如果相等,就使用spli...
閱讀 2283·2021-10-09 09:41
閱讀 1746·2019-08-30 15:53
閱讀 989·2019-08-30 15:52
閱讀 3443·2019-08-30 11:26
閱讀 768·2019-08-29 16:09
閱讀 3422·2019-08-29 13:25
閱讀 2260·2019-08-26 16:45
閱讀 1932·2019-08-26 11:51