5.5.5 filter
过滤:
【1】功能:复制出数组中符合要求的个别元素,放入新数组中返回
【2】如何使用:
var 新数组=数组.filter(
function(当前元素值, 当前下标i, 当前数组){
return 判断当前元素值是否符合要求
}
)
【3】原理
i:先创建一个新的空数组等待
ii:filter内部自带for循环,会自动遍历原数组中给的每个元素
iii:每遍历一个元素就会自动调用一次回调函数
iv:每次调用回调函数时都会自动传入三个参数值
①当前元素值
②当前下标i
③当前数组对象
v:在回调函数内,判断当前元素值是否符合要求,并返回判断结果
①如果当前元素的判断结果为true,则表示当前元素符合条件,则filter会将当前元素值使用push方法追加到新数组中保存
②如果当前元素的判断结果为false,则表示当前元素不符合条件,filter什么都不做,继续遍历下一个元素
【4】示例:过滤出数组中的偶数
// filter函数 过滤
var arr=[1,2,3,4,5];
var arr2=arr.filter(
// 拿出数组中的偶数,放入新数组中,原数组保持不变
function(elem,i,arr){
return elem%2===0;
}
)
console.log(arr);
console.log(arr2);
5.5.6 reduce
汇总 本次以数组内元素求和为例
【1】功能:对数组中所有元素进行统计,并返回统计结果
【2】如何使用:有2个参数
var 结果=数组.reduce(
function(当前元素之前的临时汇总值, 当前元素值, 当前下标i, 当前数组){
return 当前元素之前的临时汇总值+当前元素值
},
起始值
)
【3】原理
i:内部创建一个变量,保存汇总的起始值——起始值
ii:reduce内自带for循环,自动遍历原数组中的每个元素
iii:每遍历一个元素就会自动调用一次回调函数
iv:每次调用回调函数都会自动传入4个值:
①当前对象之前的临时汇总值
②当前元素值
③当前下标i
④当前数组对象
v:在回调函数中,将临时汇总值与当前元素值相加,计算出新的汇总值,再返回给reduce
【4】示例:对数组中元素求和
// reduce函数用于汇总
// 以数组求和为例
var arr=[1,2,3,4,5];
var res=arr.reduce(
// elem前的汇总值 当前元素 当前下标 当前数组
function( pre, elem, i, arr){
// 会先将起始值赋给pre,pre与elem相加后,将结果返回给reduce函数,reduce函数会将其再返回给起始值,为下一次相加做准备
return pre+elem;
},0 //起始值
)
console.log(arr);
console.log(res);