JS高阶函数 filter/map/reduce

		// 需求取出所有小于100的数字,下面的是常规方法。
        const nums = [10,20,111,222,444,40,50]
        let newNums = []
        let bug = 0
        for(let n of nums) {
            if(n < 100) {
                newNums.push(n*2)
                bug = bug + n*2
            }
        }
        console.log(newNums)
        console.log(bug)

        // 三个高阶函数:filter/map/reduce  其本身需要的参数中有一个也是一个函数。
        // 使用高阶函数的方法
        // 1、filter中的回调函数有一个要求:必须返回一个boolean值。
        // true: 函数内部会自动将这次回调的n加入新的数组中(新数组由内部自己创建)。
        // false:函数内部会过滤掉这次的n
        const nums = [10,20,111,222,444,40,50]
        let newNums = nums.filter(function (n) {    //这里用newNums接收新数组
            // return true  的话,所有数据都会被遍历进去,那就和之前的数组没有区别了。
            return n < 100
        })
        console.log(newNums)

        // filter必须返回bool类型(判断),map返回想要的值(计算)
        // 2、乘以2用map函数 
        let dddmap = nums.map(function (n) {       // function (n)  可以改为箭头函数n =>
            // return 100     // 会返回4个100
            return n*2     // 返回每位乘以2
            // return n < 100    // 返回每位判断的true和false
        })
        console.log(dddmap)

        const numbers = [1,2,3,4]; 
        // 方法一数组转函数
        var num = numbers.map(function(n){ 
            var obj = {}
            var nm = "value"
            obj[nm] = n
            return obj; 
        });
        // 方法二数组转函数
        var num = numbers.map(n =>({value:n}));    // 方法二对象外面必须要加一个括号
        console.log(num)

        // filter,map结合
        const nums = [10,20,111,222,444,40,50]
        let newNums = nums.filter(num => num < 100).map(num => num*2)
        console.log(newNums)

        // 3、reduce函数的使用
        // 对数组中的所有内容进行汇总,至少需要传两个值
        const nums = [10,20,111,222,444,40,50]
        // reduce(参数一,参数二),参数一是一个函数,参数二(初始值)暂且传一个0
        // 当前数组一共有7个值,所以会遍历7次
        // 第一次:preValue就是0,因为下面函数的第二个参数初始化为0。  preValue 0 n 10
        // 第二次:preValue 10 n 20
        // 第三次:preValue 30 n 111
        // 第四次:preValue 141 n 222
        // 第五次:preValue 363 n 444
        // 第五次:preValue 807 n 40
        // 第五次:preValue 847 n 50
        // 最后return 897
        let aaa = nums.reduce(function(preValue, n) {
            // preValue是上一次返回的值
            return preValue + n
        },0)
        console.log(aaa)

        // filter,map,reduce结合使用
        const nums = [10,20,111,222,444,40,50]
        let newNums = nums.filter(num => num < 100).map(num => num*2).reduce((a,b) => a + b)
        console.log(newNums)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值