JavaScript中filter的用法实例分析
本文实例讲述了JavaScript中filter的用法。分享给大家供大家参考,具体如下:
filter
filter也是一个常用的操作,它用于把Array的某些元素过滤掉,然后返回剩下的元素。
和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以下的版本没有trim()方法 }); r;//['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的重复元素:
'usestrict'; var r, arr=['apple','strawberry','banana','pear','apple','orange','orange','strawberry']; r=arr.filter(function(element,index,self){ returnself.indexOf(element)===index; }); console.log(r.toString());
运行结果:
apple,strawberry,banana,pear,orange
去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。
尝试用filter()筛选出素数:
'usestrict'; functionget_primes(arr){ vari; returnarr.filter(function(element){ varflag=true; if(element<2){ flag=false; }else{ for(vari=2;i运行结果:
测试通过!
感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。
PS:这里再为大家推荐一款JS数组遍历方式分析对比工具供大家参考:
在线JS常见遍历方式性能分析比较工具:http://tools.jb51.net/aideddesign/js_bianli
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数组操作技巧总结》、《JavaScript遍历算法与技巧总结》、《javascript面向对象入门教程》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。