前言ES6中新加入的数组方法包含多个遍历方法,包括filter和reducefilter用于过滤。filter方法主要用于过滤数组。在使用中,不会改变原来的数组,将满足过滤条件的元素放入新的数组中返回。/****@item数组元素*@index遍历数组下标*@thisArr当前数组*/letarr1=[1,2,3,4,5];让newArr1=arr1.filter((item,index,thisArr)=>{console.log(item);console.log(index);console.log(thisArr);returnitem>2;})console.log(arr1);console.log(newArr1);`上面的代码运行后可以看到原来的数组arr1没有变化,newArr1用来接收满足过滤条件的数组//[1,2,3,4,5]arr1//[3,4,5]newArr1reduce与map、filter等遍历方法不同,reduce的语法有点特殊:array.reduce(function(total,currentValue,currentIndex,thisArr){},initValue);@function回调函数作为第一个参数,total作为返回值或初始值返回currentValue当前遍历的元素currentIndex当前遍历的元素下标thisArr为当前执行操作的数组。initValue是传给函数的初始值console.log(next);returnprev+next;},0)console.log(totals)过滤首字母是否包含字母bletarr=['beep','boop','foo','bar'];console.log(arr.reduce((acc,val)=>(val[0]==='b'&&acc.push(val),acc),[]));//高级每做numbercontain'b'arr.reduce((acc,val)=>(val.indexOf('b')>-1&&acc.push(val),acc),[])除了数组求和,reduce还可以也处理数组的去重,遍历最大值和最小值的操作也可以以高阶函数的形式被其他函数调用。最后,reduce和filter是ES6中数组的新方法,在面试和开发中经常遇到。这两个函数可以结合其他新方法如map来处理一些更复杂的数据。文章个人博客地址:JavaScript数组方法过滤与归约
