1 filter過濾函數
const nums = [2,3,5,1,77,55,100,200]
//要求獲取nums中大於50的數
//回調函數會遍歷nums中每一個數,傳入回調函數,在回調函數中寫判斷邏輯,返回true則會被數組接收,false會被拒絕
let newNums = nums.filter(function (num) {
if(num > 50){
return true;
}
return false;
})
//可以使用箭頭函數簡寫
// let newNums = nums.filter(num => num >50)
filter() 方法創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
注意: filter() 不會對空數組進行檢測。
注意: filter() 不會改變原始數組。
2 map高階函數
// 要求將已經過濾的新數組每項乘以2
//map函數同樣會遍歷數組每一項,傳入回調函數為參數,num是map遍歷的每一項,回調函數function返回值會被添加到新數組中
let newNums2 = newNums.map(function (num) {
return num * 2
})
//簡寫
// let newNums2 = newNums.map(num => num * 2)
console.log(newNums2);
map() 方法返回一個新數組,數組中的元素為原始數組元素調用函數處理后的值。
map() 方法按照原始數組元素順序依次處理元素。
注意: map() 不會對空數組進行檢測。
注意: map() 不會改變原始數組。
3 reduce高階函數
// 3.reduce高階函數
//要求將newNums2的數組所有數累加
//reduce函數同樣會遍歷數組每一項,傳入回調函數和‘0’為參數,0表示回調函數中preValue初始值為0,回調函數中參數preValue是每一次回調函數function返回的值,currentValue是當前值
//例如數組為[154, 110, 200, 400],則回調函數第一次返回值為0+154=154,第二次preValue為154,返回值為154+110=264,以此類推直到遍歷完成
let newNum = newNums2.reduce(function (preValue,currentValue) {
return preValue + currentValue
},0)
//簡寫
// let newNum = newNums2.reduce((preValue,currentValue) => preValue + currentValue)
console.log(newNum);
reduce() 方法接收一個函數作為累加器,數組中的每個值(從左到右)開始縮減,最終計算為一個值。
reduce() 可以作為一個高階函數,用於函數的 compose。
注意: reduce() 對於空數組是不會執行回調函數的。
5.4綜合使用
//三個需求綜合
let n = nums.filter(num => num > 50).map(num => num * 2).reduce((preValue,currentValue) => preValue + currentValue)
console.log(n);
