1. zepto實(shí)現(xiàn)數(shù)組去重的方法:
var uniq = function(array){
return [].filter.call(array, function(item, index){
return array.indexof(item) == index;
})
}
判斷元素在數(shù)組中首次出現(xiàn)的位置阀溶,是否等于它在數(shù)組中的位置腻脏。
var a = [1, 1, 2, 2, 3, 3, 4]
item | array.indexof(item) | index
1 0 0 //v
1 0 1
2 2 2 //v
2 2 3
3 4 4 //v
3 4 5
4 6 6 //v
uniq(a); //[1,2,3,4]
2. 利用ES6中 Set 的特性
Set 是ES6提供的一種新的數(shù)據(jù)結(jié)構(gòu)。它類似于數(shù)組淌哟,但是成員的值都是唯一的迹卢,沒有重復(fù)的值。
它接收一個(gè)數(shù)組或者類似于數(shù)組的參數(shù)徒仓。
var arr = [...new Set([1,1,2,2,3,3,4])];
arr // [1, 2, 3, 4]
3. 遍歷
var arr = [];
[1,1,2,2,3,3,4].forEach((item, index)=>{
if(arr.indexOf(item) === -1) {
arr.push(item);
}
});
arr // [1, 2, 3, 4]
這種方法弊端:需要定義一個(gè)新的數(shù)組來儲(chǔ)存結(jié)果腐碱。