(1)判断:
①判断数组中是否所有元素都符合要求
var bool=arr.every( function(elem,i,arr){ return 判断条件 } )
返回值为true或false
原理:
1). every内部自带for循环,遍历数组中每个元素
2). 每遍历一个元素,就自动调用一次回调函数
3). 每次调用回调函数时:
i. 形参elem,会自动获得当前正在遍历的元素值
ii. 形参i, 会自动获得当前正在遍历到的下标位置
iii. 形参arr,会自动获得当前调用every()时.前的数组对象arr
②判断数组中是否包含符合要求的元素
var bool=arr.some(function(elem,i,arr){ return 判断条件 })
每次循环调用一次回调函数,如果当前元素满足条件,则数组后续的元素不再遍历
(2)遍历:
① forEach
arr.forEach(//自带了for循环,遍历数组中每个元素 function(elem,i,arr){ //每遍历一个元素就自动调用一次回调函数 //elem收到当前正在遍历的元素值 //i收到当前正在遍历到的下标位置 //arr收到调用forEach()的.前的数组 //对当前数组中正在遍历的当前元素执行任何操作! } )
var arr=[1,2,3];
arr.forEach(function(elem,i,arr1){
arr1[i]+=1;
});
console.log(arr); //[2,3,4]
②map:遍历出原数组中每个元素值,修改后,放入新数组中返回
var arr=[1,2,3]
console.log(arr); var newArr=arr.map((elem,i,arr)=>{ return elem*elem; }); console.log(newArr); //arr[1,4,9]
③for of
for(var 变量 of 数组/类数组对象/字符串){ of会依次取出数组中每个元素的值,保存到of前的变量中 }
for of 不能获取位置,不能倒序遍历
*for of | for in | forEach
1) 所有数字下标的索引数组、类数组对象、字符串都能用for of 遍历;只有索引数组才能用forEach;
2) 所有自定义下标名称的关联数组、对象、都用for in 遍历,for in获取的不是元素值,而仅仅是下标名称
(3)过滤 filter
复制出数组中符合条件的元素,放入一个新数组返回,原数组保持不变
var arr=[1,2,3,4,5,6]; var odd=arr.filter((elem,i,arr)=>{ return elem%2!==0; }); console.log(odd); //[1,3,5]
(4)汇总reduce
对数组中的元素进行统计,最终得出一个结果
var sum=arr.reduce( //1. Reduce先定义变量保存起始值 //2. Reduce自带for循环,遍历数组中每个元素 //3. 每遍历一个元素,也自动调用一次回调函数 function(prev, elem, i, arr){ //prev是previous的缩写,表示当前元素之前的临时汇总值 return prev+elem; }, 起始值 )