1. 程式人生 > 實用技巧 >512 高階函式 filter、map、reduce

512 高階函式 filter、map、reduce

程式設計正規化: 指令式程式設計、宣告式程式設計

程式設計正規化: 面向物件程式設計(第一公民:物件),函數語言程式設計(第一公民:函式)

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