javascript数组有6种迭代方法,都是对数组项进行处理,但是返回的结果可以分为几种。
1.返回布尔值的every和some
从这两个迭代方法的名称可以看出来大致的作用.
var arr=[1,2,3,4,5]; var newarr=arr.every(function(item,index){ //检测数组项是不是都是符合条件的 return item>0; }); console.log(newarr) //true console.log(arr) //[1,2,3,4,5]
every针对数组项内容全部都符合函数条件,则返回true,否则是false
var arr=[1,2,3,4,5]; var newarr=arr.every(function(item,index){ //检测数组项只要有一项满足条件即可 return item>3; }); console.log(newarr) //true console.log(arr) //[1,2,3,4,5]
some针对数组项内容只要有一项符合函数条件,则返回true,否则是false
2.返回新的数组的map,filter
分别从名字可以大致判断,map为映射数组,对数组项做了动作。filter字面意思是过滤器,应该是过滤数组项。
var arr=[1,2,3,4,5]; var newarr=arr.map(function(item,index){ //对数组每项进行处理,最后返回一个新的数组 return item*2; }); console.log(newarr) //[2,4,6,8,10] console.log(arr) //[1,2,3,4,5]
map映射数组项,对数组项处理并产生新的数组项,新的数组项组合成新的数组
var arr=[1,2,3,4,5]; var newarr=some.map(function(item,index){ //对数组每项进行过滤,排除掉不符合条件的项 return item>2; }); console.log(newarr) //[3,4,5] console.log(arr) //[1,2,3,4,5]
filter过滤原数组项,将符合条件的数组项组合成新的数组
3. 只是处理原数组forEach
var arr=[1,2,3,4,5]; var newarr=arr.forEach(function(item,index){ //对数组每项进行循环处理,但是不影响原来的数组 item++; }); console.log(newarr) // undefined console.log(arr) // [1,2,3,4,5]
forEach迭代原数组项(进行一些操作),但不影响原数组,也不返沪新的数组
4.reduce叠加数组,返回叠加之后的结果
var arr=[1,2,3,4,5]; var newarr=arr.reduce(function(prev,next){ //对数组每项进行循环处理,但是不影响原来的数组 return prev+next; }); console.log(newarr) // 15 console.log(arr) // [1,2,3,4,5]
reduce将数组从第一项开始叠加到最后,并且返回叠加之后的结果,但是不影响原数组