0
点赞
收藏
分享

微信扫一扫

JS高阶函数

​记录在学习js中的收获及心得,JS中关于数组运算的一些高阶函数,同时将会对比高阶函数对应的普通算法。

filter,map,reduce

​filter

可按照规则过滤原数组中的元素,并形成新的数组,filter的回调函数必须返回bool值,只有当返回值为真时,才会将计算的值插入新数组,反之将被过滤掉。

let simarr = [1, 3, 5, 2, 4, 7, 9, 6]

//1.取数组中所有的偶数,形成一个新数组
//for算法
let sim_for_arr = []
for (let i = 0; i < simarr.length; i++) {
if (simarr[i] % 2 == 0) {
sim_for_arr.push(simarr[i])
}
}
console.log('sim_for_arr:', sim_for_arr);

//filter函数
//按规则过滤数组,并形成新的数据
let sim_filter_arr = simarr.filter(function (n) {
return n % 2 == 0
})
console.log('sim_filter_arr:', sim_filter_arr);
map

可按照规则转换数组中的元素,并形成新的数组。

//2.将新生成的数组中的每个元素扩大10倍
//for算法
let sim_for2_arr = []
for (let i = 0; i < sim_for_arr.length; i++) {
sim_for2_arr.push(sim_for_arr[i] * 10)
}
console.log('sim_for2_arr:', sim_for2_arr);

//map函数
//按规则调整数组中的元素
let sim_map_arr = sim_filter_arr.map(function (n) {
return n * 10
})
console.log('sim_map_arr', sim_map_arr);
reduce

可汇总数组中的元素,需注意reduce的回调函数有个初始值,需根据情况设置。

//3.计算数组中所有元素的和
//for算法
let Total_for = 0
for (let i = 0; i < sim_for2_arr.length; i++) {
Total_for += sim_for2_arr[i]
}
console.log('Total_for', Total_for);

//reduce函数
//按规则汇总数组中的元素
let Total = sim_map_arr.reduce(function (preval, n) {
return preval + n
}, 0)
console.log('Total:', Total);
举报

相关推荐

0 条评论