filter简述
filter
是Javascript中Array常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
和map
类似,Array的filter
也接收一个函数。但是和map不同的是,filter
把传入的函数依次作用于每个元素,然后根据返回值是true
还是false
决定保留还是丢弃该元素。
例如,在一个Array中,删掉偶数,只保留奇数,可以这么写:
把一个Array中的空字符串删掉,可以这么写:
可见用filter
这个高阶函数,关键在于正确实现一个“筛选”函数。
回调函数
filter
接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:
利用filter
,可以巧妙地去除Array的重复元素:
去除重复元素依靠的是indexOf
总是返回第一个元素的位置,后续的重复元素位置与indexOf
返回的位置不相等,因此被filter
滤掉了。