过滤掉数组中相同的元素的方法有很多种,我们平常大多时候可能会使用for循环、foreach循环的,总之就是使用循环的方式来过滤元素,我们会发现使用循环的方式过滤数组有点复杂,而且还会消耗性能挺大的,下面我来介绍一下使用filter的方式来过滤相同的元素,提高性能。
filter() 方法是对数组的操作,将数组中的某些元素过滤掉返回剩下的元素。filter()方法有三个参数,分别是:
- currentValue 指当前元素
- index 指当前元素的索引值
- self 指当前操作的数组
1、使用filter过滤掉数组中相同的元素
例子:
var arr3 = [1, 2, 4, 2, 1, 6, 9, 12, 13, 15, 10, 1, 5, 6, 9, 10, 15];
var r3 = arr3.filter(function (currentValue,index,self) {
return self.indexOf(currentValue) === index;
});
console.log(r3); // [1, 2, 4, 6, 9, 12, 13, 15, 10, 5]
小知识点:数组arr结合indexOf以及当前元素是可以得到对应当前元素的索引值
var arr4 = [21,31,10,10,23,5,412,21,3,15,26,14];
console.log(arr4.indexOf(412)); //6
2、使用filter过滤掉数组中的某个元素
例子(过滤掉数组中的偶数):
var arr = [1, 2,16, 10, 12, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (value) {
return value % 2 !== 0;
});
console.log(r); // [1, 5, 9, 15]