js高階函數(shù)

高階函數(shù)將其他函數(shù)作為參數(shù)或?qū)⒎祷睾瘮?shù)作為結(jié)果。它們提供了JavaScript中清晰易懂的語法。這將幫助你以更少的代碼來實現(xiàn)更多目標(biāo)。

  • forEach()
    接受另一個函數(shù)作為參數(shù)。它用于以一種簡單的方式循環(huán)遍歷數(shù)組項。它可以接受三個類型的參數(shù)(元素,值和索引)。
var arr = [1, 2, 3, 4, 5];
// Using ES5.
arr.forEach(function(item){
if(item > 3){
console.log(item); // Returns 4 and 5.
}
});
// Using ES6.
arr.forEach(item =>{
if(item > 3){
console.log(item); // Returns 4 and 5.
}
});
  • map()
    返回一個數(shù)組,該數(shù)組的長度與調(diào)用該數(shù)組的長度相同。只要它的回調(diào)函數(shù)沒有改變,它也不會改變原始數(shù)組。它也可以采用三個類型參數(shù)(元素,值和索引)。
  const users = [
    { name: 'John', age: 34 },
    { name: 'Amy', age: 20 },
    { name: 'camperCat', age: 10 }
  ];

  const names = users.map(user => user.name);
  console.log(names); //Returns: [ 'John', 'Amy', 'camperCat' ]
  const new_ages = users.map(user => {
    if (user.age < 20){
      return user.age * 2;
    }
    return user.age;
  })
  console.log(new_ages);  //Returns: [34, 20, 20]
  • filter()
    在數(shù)組的每個元素上調(diào)用一個函數(shù),并返回一個僅包含該函數(shù)返回的元素的新數(shù)組true。換句話說,它根據(jù)傳遞給它的函數(shù)過濾數(shù)組。就像map方法一樣,但是它不需要修改原始數(shù)組就可以完成工作。

可以接受三個參數(shù):
第一個參數(shù):當(dāng)前正在處理的元素;
第二個參數(shù):該元素的索引;
第三個參數(shù):在其上filter調(diào)用該方法的數(shù)組;

filter中的回調(diào)函數(shù)必須返回一個布爾值:
true:函數(shù)內(nèi)部會自動將這次回調(diào)的item加入到新的數(shù)組中
false:函數(shù)內(nèi)部會過濾掉這次的item

  const arr = [1, 2, 3, 4, 5];
  // Using ES5 syntax.
  var filtered = arr.filter(function(item){
    return item < 3;
  });
  console.log(filtered); // Returns: [1, 2]
  // Using ES6 syntax.
  const filtered = arr.filter(item => item < 3);
  console.log(filtered); // Returns: [1, 2]
  • reduce()
    允許使用更通用的數(shù)組處理形式,并且filter與map可以作為特殊應(yīng)用派生出reduce。
    它遍歷數(shù)組中的每個項目并返回一個值。這是通過將其作為參數(shù)回調(diào)來實現(xiàn)的。
    該函數(shù)reduce有兩個位置參數(shù),第一個是累加器,另一個是迭代值,它返回累加值。
  const users = [
    { name: 'John', age: 34 },
    { name: 'Amy', age: 20 },
    { name: 'camperCat', age: 10 }
  ];

  const sumOfAges = users.reduce((sum, user) => sum + user.age, 0);
  console.log(sumOfAges); //Returns: 64.

  const sumAges = users.reduce((sum, user) => {
    return sum + user.age;
  }, 0);
  console.log(sumAges); //Returns: 64.
  • sort()
    對數(shù)組的項目進(jìn)行排序。排序順序可以是字母或數(shù)字,也可以是升序或降序。
  // 以升序?qū)?shù)組中的數(shù)字進(jìn)行排序:
  // Using ES5
  var points = [40, 100, 1, 5, 25, 10];
    points.sort(function(a, b){
      return a-b;
    }) // [1,5,10,25,40,100].
  // 以降序?qū)?shù)組中的數(shù)字進(jìn)行排序:
  // Using ES6
  const points = [40, 100, 1, 5, 25, 10];
  points.sort((a,b)=> b - a); // [100,40,25,10,5,1].
  • every()
    檢查數(shù)組中的每個元素是否通過特定測試。它返回一個布爾值(true / false)。
  //檢查數(shù)組中的每個元素numbers是否小于10。
  let numbers = [1, 5, 8, 0, 10, 11];
  numbers.every(function(currentValue) {
    return currentValue < 10;
  });
  console.log(res); 
  // Returns false
  • some()
    有點類似于該方法every(),它檢查數(shù)組中的任何元素是否通過特定測試。它還返回一個布爾值(true / false)。
  //檢查數(shù)組中的任何元素numbers是否小于10。
  var numbers = [10, 50, 8, 220, 110, 11];
  numbers.some(function(currentValue) {
    return currentValue < 10;
  });
  // Returns true
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容