1. zepto实现数组去重的方法:
var uniq = function(array){
return [].filter.call(array, function(item, index){
return array.indexof(item) == index;
})
}
判断元素在数组中首次出现的位置,是否等于它在数组中的位置。
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提供的一种新的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。
它接收一个数组或者类似于数组的参数。
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]
这种方法弊端:需要定义一个新的数组来储存结果。