filter(ele)过滤数组
filter也是一个常用的操作,它用于把Array
的某些元素过滤掉,然后返回剩下的元素。
例如,在一个Array
中,删掉偶数,只保留奇数,可以这么写:
function remove(arr) { let res = arr.filter(function (ele) { return ele % 2 !== 0; }); console.log(res); } remove([1, 2, 3, 4, 2, 4, 5]);
删除数组中的空字符串,可以这么写:
1 var arr = ['A', '', 'B', null, undefined, 'C', ' ']; 2 var r = arr.filter(function (s) { 3 return s && s.trim(); // 注意:IE9以下的版本没有trim()方法 4 }); 5 r; // ['A', 'B', 'C']
filter()
接收的回调函数,其实可以有多个参数。
var arr = ['A', 'B', 'C']; var r = arr.filter(function (element, index, self) { console.log(element); // 依次打印'A', 'B', 'C' console.log(index); // 依次打印0, 1, 2 console.log(self); // self就是变量arr return true; });
利用filter,数组去重?
function remove(arr) { let res = arr.filter(function (ele,index,self) { return self.indexOf(ele) === index; }); console.log(res); } remove([1, 2, 3, 4, 2, 4, 5]);
注释:去除重复元素依靠的是indexOf
总是返回第一个元素的位置,后续的重复元素位置与indexOf
返回的位置不相等,因此被filter
滤掉了。
原文链接:https://www.cnblogs.com/cjx-work/p/8052865.html