. map、 . every 和. forEach 之间的区别是什么?

我一直想知道他们之间有什么不同,他们似乎都做同样的事情..。

58769 次浏览

区别在于返回值。

.map() 返回一个新的 Array 对象通过对原始项目采取某些行动而创建。

如果该数组中的每个元素都满足所提供的测试函数,则为 .every() 返回一个布尔值-true。与 .every()的一个重要区别是,对于数组中的每个元素,不一定总是调用 test 函数。一旦测试函数对任何元素返回 false,就不再迭代数组元素。因此,测试功能通常应该没有 副作用

.forEach() 一无所获-它迭代 Array,对 Array 中的每个项目执行给定的操作。

阅读有关这些和许多其他 MDN 上的数组迭代方法

Gilly3的回答很棒。我只是想添加一些关于其他类型的“循环遍历元素”函数的信息。

归功于 T.J.Crowder 通过 JavaScript 中的数组来实现?

上面这些答案的另一个考虑因素就是链接。使用 forEach ()不能链接,但是使用 map ()可以链接。

例如:

var arrayNumbers = [3,1,2,4,5];


arrayNumbers.map(function(i) {
return i * 2
}).sort();

如果使用.forEach () ,则不能执行. sort () ,会得到一个错误。

对于 拉姆达R.map()R.forEach()的区别是:

  1. R.forEach()返回原始数组,而 R.map()返回 函子
  2. R.forEach()只能对数组进行操作,但是 R.map()也可以对对象进行操作(即处理对象的键/值对 就像数组一样)