Javascript中关于Array.filter()的妙用详解
前言
和map类似,Array的filter也接收一个函数。但是和map不同的是,filter把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素。
实例介绍
例如,在一个Array中,删掉偶数,只保留奇数,可以这么写:
vararr=[1,2,4,5,6,9,10,15]; varr=arr.filter(function(x){ returnx%2!==0; }); r;//[1,5,9,15]
把一个Array中的空字符串删掉,可以这么写:
vararr=['A','','B',null,undefined,'C','']; varr=arr.filter(function(s){ returns&&s.trim();//注:IE9(不包含IE9)以下的版本没有trim()方法 }); arr;//['A','B','C']
可见用filter这个高阶函数,关键在于正确实现一个“筛选”函数。
回调函数
filter接收的回调函数,其实可以有多个参数。通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:
vararr=['A','B','C']; varr=arr.filter(function(element,index,self){ console.log(element);//依次打印'A','B','C' console.log(index);//依次打印0,1,2 console.log(self);//self就是变量arr returntrue; });
利用filter,可以巧妙地去除Array的重复元素:
varr, arr=['apple','strawberry','banana','pear','apple','orange','orange','strawberry']; r=arr.filter(function(element,index,self){ returnself.indexOf(element)===index; }); console.log(r.toString());
去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。
总结
以上就是关于Javascript中Array.filter()妙用的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。