<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>