JavaScriptにおけるmap、foreach、reduce、filterの違い
981 ワード
配列があると仮定します.各要素は一人です.あなたの前に人が並んでいます.
参考:JavaScriptにおけるmap、foreach、reduceの違いをどのようにイメージして説明しますか?
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の違いをどのようにイメージして説明しますか?