24.filter~map~reduce高階函式
阿新 • • 發佈:2020-12-29
<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>