假設咱們有一個數組,每一個元素是一我的。你面前站了一排數組
foreach 就是你按順序一個一個跟他們作點什麼,具體作什麼,隨便:bash
people.forEach(function (dude,index) {
dude.pickUpSoap();
});複製代碼
map 就是你手裏拿一個盒子(一個新的數組),一個一個叫他們把錢包扔進去。結束的時候你得到了一個新的數組,裏面是你們的錢包,錢包的順序和人的順序一一對應。ui
var wallets = people.map(function (dude) {
return dude.wallet;
});複製代碼
就是你拿着錢包,一個一個數過去看裏面有多少錢啊?每檢查一個,你就和前面的總和加一塊兒來。這樣結束的時候你就知道你們總共有多少錢了。spa
var totalMoney = wallets.reduce(function (countedMoney, wallet) {
return countedMoney + wallet.money;
}, 0);// countedMoney 開始接收0 複製代碼
var fatWallets = wallets.filter(function (wallet) {
return wallet.money > 100;
});複製代碼
那就是 map 和 filter 都是 immutable methods,也就是說它們只會返回一個新數組,而不會改變原來的那個數組,因此這裏 filter 的例子是和代碼有些出入的(原來的盒子裏的錢包減小了),但爲了形象說明,你們理解就好.code