JavaScriptにおけるmap、foreach、reduce、filterの違い

981 ワード

配列があると仮定します.各要素は一人です.あなたの前に人が並んでいます.forEachはあなたが順番に彼らに何をしたいかと言います.
peoples.forEach(function(people) {
  people.doSomething()
});
mapはあなたが持っている箱です.一つは彼らに財布を投げ込ませます.終わった時に新しい配列を獲得しました.中にはみんなの財布が入っています.財布の順番は人の本の順番に対応しています.
var wallets = people.map(function(people) {
  return people.wallet;
});
reduceは財布を持っています.一つずつ数えて中を見に行きます.いくらですか?一つの検査をするたびに、前の合計と合わせてください.このように終わると、みんながいつもどれぐらいのお金を持っているか分かります.
var totalMoney = wallets.reduce(function(countedMoney, wallet) {
  return countedMoney + wallet.money
}, 0);
filterはあなたの1つの財布が過去に数える時で、中は100元以下の要らないで、もとの箱の中に残して、100元より多いのは新しい箱の中でなくして、このように終わる時、あなたはまた1つの新しい行列があって、中はすべて100元以上の財布です.
var fatWallets = wallets.filter(function(wallet) {
  return wallet.money > 100
});
まとめ:mapとfilterは全部immutable methodsで、つまり新しい配列を返します.元の配列を変えません.
参考:JavaScriptにおけるmap、foreach、reduceの違いをどのようにイメージして説明しますか?