巧用.filter去重

filter是根据过滤条件对整个数组进行过滤,符合的为true保留,不符合的为false删除。
核心代码如下:
r = arr.filter(function (element, index, self) {
 return self.indexOf(element) === index;
});;
arr.filter里三个参数的含义:
element:当前的元素
index:当前元素的位置
self:整个数组
self.indexOf(element):当前元素在数组中第一次出现的位置
过滤条件: 当前元素在数组中第一次出现的位置当他与当前元素的位置相同时就保留,如果不同证明它不是第一次在数组中出现,就删除。
通过下面这个例子直观的看一下:
var r=[];
   arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
r = arr.filter(function (element, index, self) {
console.log(element);
console.log(index);
//console.log(self);
console.log(self.indexOf(element));
 return self.indexOf(element) === index;
});
console.log(r);

巧用.filter去重这样能更清楚的理解它的整个过程;

//Es6中去重的方法
var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
 var arr2=[...new Set(arr)];
 console.log(arr2);

当然去重的方法很多,如果你单纯的想去重的话可以看一下其他大佬的文章~