filter
map
reduce
-
filter
高階函數(shù)的用法
filter 中的回調(diào)函數(shù)有一個(gè)要求:
必須返回一個(gè)boolean值
當(dāng),返回 true時(shí)的, 內(nèi)部會(huì)將這次遍歷的元素放入一個(gè)新的數(shù)組匯總
當(dāng),返回false時(shí), 內(nèi)部會(huì)過(guò)濾掉當(dāng)前遍歷的元素
const nums = [200, 120, 19, 60, 10, 20, 40,100];
const arr_100 = nums.filter((num)=>{
//取出 > 100 的數(shù), 放入新數(shù)組
return num > 100
})
console.log(arr_100);
-
map
高階函數(shù)的使用
如果需要對(duì)數(shù)組里面的所有元素進(jìn)行處理, 得到一個(gè)新的數(shù)組就可以 使用map
map 函數(shù)也是需要一個(gè)函數(shù)類型的參數(shù)
//const nums = [200, 120, 19, 60, 10, 20, 40,100];
將 nums 中的所有元素 乘以2 得到一個(gè)新的數(shù)組
const arr_map = nums.map((num)=>{
return num * 2
})
console.log(arr_map);
-
reduce
高階函數(shù)的使用
reduce 對(duì)數(shù)組中的所有內(nèi)容進(jìn)行匯總, 可以把reduce函數(shù)理解成一個(gè)迭代函數(shù)
- reduce 函數(shù)有2個(gè)參數(shù), 第一個(gè)是 迭代回調(diào)參數(shù),是一個(gè)函數(shù)類型(有兩個(gè)參數(shù) previous 和 current)
- 第二個(gè)參數(shù)是初始化參數(shù)
- 第一個(gè)迭代參數(shù), 第一次回調(diào)時(shí) previous 就是初始化參數(shù), 后面的每次回調(diào)就是 return返回的值
const arr = [10,20,30,40]
const initParam = 1
let total = arr.reduce((previousItem, currentItem)=>{
console.log('pre: ' + previousItem, 'current: +' + currentItem);
return previousItem + currentItem;
}, initParam)
console.log('total: ' + total);
打印結(jié)果:
pre: 1 current: +10
pre: 11 current: +20
pre: 31 current: +30
pre: 61 current: +40
total: 101
-
filter
map
reduce
高階函數(shù)綜合應(yīng)用
// 高階函數(shù) filter map 和 reduce 的綜合使用
const counters = [1,2,3,4,5,6,7,8,9,10];
let totalCount = counters.filter((count)=>{
return count%2 == 0
}) // 取出所有的偶數(shù)
.map((doubleCount)=>{
return doubleCount * 2;
}) // 每個(gè)偶數(shù) 都乘以2
.reduce((pre, current)=>{
return pre + current
},0) // 將所有的偶數(shù) 相加
console.log('總數(shù): ', totalCount);