es6 map、foreach、reduce、 filter 詳解

forEach:

假設咱們有一個數組,每一個元素是一我的。你面前站了一排數組

foreach 就是你按順序一個一個跟他們作點什麼,具體作什麼,隨便:bash

people.forEach(function (dude,index) {
  dude.pickUpSoap();
});複製代碼
Map:

map 就是你手裏拿一個盒子(一個新的數組),一個一個叫他們把錢包扔進去。結束的時候你得到了一個新的數組,裏面是你們的錢包,錢包的順序和人的順序一一對應。ui

var wallets = people.map(function (dude) {
  return dude.wallet;
});複製代碼
reduce:

 就是你拿着錢包,一個一個數過去看裏面有多少錢啊?每檢查一個,你就和前面的總和加一塊兒來。這樣結束的時候你就知道你們總共有多少錢了。spa

var totalMoney = wallets.reduce(function (countedMoney, wallet) {
  return countedMoney + wallet.money;
}, 0);// countedMoney 開始接收0 複製代碼

補充一個 filter 的:
你一個個錢包數過去的時候,裏面錢少於 100 塊的不要(留在原來的盒子裏),多於 100 塊的丟到一個新的盒子裏。這樣結束的時候你又有了一個新的數組,裏面是全部錢多於 100 塊的錢包:

var fatWallets = wallets.filter(function (wallet) {
  return wallet.money > 100;
});複製代碼

最後要說明一點這個類比和實際代碼的一個區別,

那就是 map 和 filter 都是 immutable methods,也就是說它們只會返回一個新數組,而不會改變原來的那個數組,因此這裏 filter 的例子是和代碼有些出入的(原來的盒子裏的錢包減小了),但爲了形象說明,你們理解就好.code

相關文章
相關標籤/搜索