filter函数是数组里的一个方法,它主要起到的是过滤作用,返回符合条件表达式的数组,代码如下:

var arr = [1,2,3,45,65,87,456]
        var str = arr.filter(function(v) {
            return v > 45
            
        })
        console.log(str)     -->输出[65,87,456]

这里我们通过给予一个判断,最终从数组里筛选出了符合条件的元素,并返回了一个新的数组,也可以称为过滤后的数组。

!!!需要注意的一点,filter函数存在一个隐式转换机制,我们在筛选数组里面的元素时,符合条件表达式的元素会被filter函数默认转换成true并通过return值返回并添加到一个新的数组当中,而不满足true,即默认被转换为false的元素会自动的过滤掉,例如:

var arr = [1,2,3,45,65,87,456,0,'',false,NaN,undefined,null]
        var str = arr.filter(function(v) {
           return v 
            
        })
        console.log(str)    -->输出[1, 2, 3, 45, 65, 87, 456]

这里我们并没有给判断条件,但最终return的数组中自动把0,’’,false,NaN,undefined,null这些元素给过滤掉了,而这六个值通过隐式转换都为false,因此在最终返回的新数组中并不包含原数组中所有的元素。于是我们知道filter和其他操作数组方法的最大不同点就是它自身的过滤机制会预先对数组进行一个筛选处理。
因此filter函数需慎用。

更多推荐

filter函数的用法