JS中的三個高階函數


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM