512 高階函式 filter、map、reduce
阿新 • • 發佈:2020-08-20
程式設計正規化: 指令式程式設計、宣告式程式設計
程式設計正規化: 面向物件程式設計(第一公民:物件),函數語言程式設計(第一公民:函式)
filter、map、reduce
filter中的回撥函式有一個要求: 必須返回一個boolean值
true: 當返回true時, 函式內部會自動將這次回撥的n加入到新的陣列中
false: 當返回false時, 函式內部會過濾掉這次的n
const nums = [10, 20, 111, 222, 444, 40, 50] let total = nums.filter(n => n < 100).map(n => n * 2).reduce((pre, n) => pre + n); // console.log(total); let total = nums.filter(function (n) { return n < 100 }).map(function (n) { return n * 2 }).reduce(function (prevValue, n) { return prevValue + n }, 0) console.log(total); // 1.filter函式的使用 // // 10, 20, 40, 50 // let newNums = nums.filter(function (n) { // return n < 100 // }) // // console.log(newNums); // // // 2.map函式的使用 // // 20, 40, 80, 100 // let new2Nums = newNums.map(function (n) { // 20 // return n * 2 // }) // console.log(new2Nums); // // // 3.reduce函式的使用 // // reduce作用對陣列中所有的內容進行彙總 // let total = new2Nums.reduce(function (preValue, n) { // return preValue + n // }, 0) // console.log(total); // 第一次: preValue 0 n 20 // 第二次: preValue 20 n 40 // 第二次: preValue 60 n 80 // 第二次: preValue 140 n 100 // 240 // // 1.需求: 取出所有小於100的數字 // let newNums = [] // for (let n of nums) { // if (n < 100) { // newNums.push(n) // } // } // // // 2.需求:將所有小於100的數字進行轉化: 全部*2 // let new2Nums = [] // for (let n of newNums) { // new2Nums.push(n * 2) // } // // console.log(new2Nums); // // // // 3.需求:將所有new2Nums數字相加,得到最終的記過 // let total = 0 // for (let n of new2Nums) { // total += n // } // // console.log(total);