filter,map,reduce高阶函数

1 篇文章 0 订阅

需求:

const nums = [10, 20, 40, 50, 222, 333, 444]

1.取出所有小于100的数字

2.将所有的小于100的数字进行转换:全部*2

3.将所有new2Nums数字相加,得到最终的结果

方法一:

1.取出所有小于100的数

for (let n of nums) {
    if( n < 100 ) {
        newNuws.push(n)
    }
}

2.将第一步取出的数 * 2 

new2Nuws = []
for (let n of newNuws) {
    new2Nuws.push(n*2)
}

 3.将第二步的数全部相加,并打印结果

let total = 0;
for (let n of new2Nuws){
    total += n;
}
console.log(total);

 方法二(使用filter map reduce)

let newNums1 = nums.filter(function (n) {
    return n <= 100
})
console.log(newNums1);
//2.map
let new2Nums2 = newNums1.map(function (n) {
    return n*2
})
let total1 = new2Nums2.reduce(function (preValue, n) {
    return preValue + n
}, 0)
console.log(total1);

解析: 

filter中的回调函数必须返回一个boolean值,在遍历数组时,每次取出数组中的一个元素进行操作。当返回true时,函数内部会自动将这次回调的n加入到新的数组中,当返回false时,函数内部会自动过滤掉这次的n。

map函数在遍历数组时,每次从数组中取出一个是并进行操作。

3.reduce函数的使用
new2Nums2=[20, 40, 80, 100]
reduce作用,对数组中的所有内容进行汇总reduce(function(), 0)
第一次:preValue 0 n 20
第二次:preValue 20 n 40
第三次:preValue 60 n 80
第四次:preValue 140 n 100
let total1 = new2Nums2.reduce(function (preValue, n) {
    return preValue + n
}, 0)
console.log(total1);

3.函数式编程

方法1

let totals = nums.filter(function (n) {
    return n <= 100
}).map(function (n) {
    return n * 2
}).reduce(function (preValue, n) {
    return preValue + n;
}, 0)
console.log(totals);

方法2 

let total2 = nums.filter(n => n < 100).map(n => n * 2).reduce((pre, n) => pre + n);
console.log(total2);
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值