24.filter~map~reduce高阶函数

<script>
        // 编程范式: 命令式编程 / 声明式编程
        // 编程范式: 面向对象编程(第一公民:对象) / 函数式编程(第一公民:函数)
        // filter / map / reduce

        // filter中的回调函数有一个要求:必须返回一个布尔值
        // true: 当返回true时  函数内部自动将这次回调的 n 加到新的数组中
        // false:当返回false时  函数内部会过滤这次的 n
        // 1. 找出数组中小于50的元素

        const nums = [45, 7, 44, 51, 875, 45, 38, 77];
        // let newNums = [];
        // let minNums = [];
        // for (let i of nums) {      //用for...of遍历
        //     if (i > 50) {
        //         newNums.push(i);
        //     }
        // }

        let newNums = nums.filter(function(n) {
            return n < 50;
        });
        console.log(newNums); //   [45, 7, 44, 45, 38]        用filter筛选    返回true就添加到新的数组中


        // 2.将小于50的元素*2

        // for (let i of nums) {
        //     if (i < 50) {
        //         minNums.push(i * 2)
        //     }
        // }
        // console.log(minNums);

        // 用map找出小于50的元素 *2
        let minNums = newNums.map(function(n) { // 用map 可以操作之前的数组元素 进行计算  返回一个新的数组
            return n * 2;
        })
        console.log(minNums);

        // 3.将minNums的每一个数组元素 相加
        // let max = 0;
        // for (let i of minNums) {
        //     max += i;
        // }
        // console.log(max);

        // 4.reduce(回调函数,初始值0) 函数的使用
        // reduce的作用是对函数的所有参数进行汇总

        let arr = [10, 20, 30, 40, 50, 60];
        let newArr = arr.reduce(function(preValue, n) { // 回调函数里面第一个值是上一轮遍历返回的值 n是遍历当前的数组元素
            return preValue + n;
            // 第一轮遍历 初始值是 0 + 遍历的第一个元素 10 = 10
            // 第二轮遍历 上一轮返回 10 + 遍历的第二个元素 20 = 30
            // 以此类推
        }, 0)
        console.log(newArr);
    </script>
原文地址:https://www.cnblogs.com/yanglaxue/p/14205766.html