JavaScript 中 map、foreach、reduce、filter 间的区别

假设我们有一个数组,每个元素是一个人。你面前站了一排人。

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就是你一个个钱包数过去的时候,里面少于100块的不要,留在原来的盒子里,多于100块的丢到新的盒子里,这样结束的时候,你又有了一个新的数组,里面是所有多于 100 块的钱包

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

总结: map 和 filter 都是 immutable methods,也就是说会返回一个新数组,而不会改变原数组的。

参考:如何形象地解释 JavaScript 中 map、foreach、reduce 间的区别?
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容