我一直想知道他们之间有什么不同,他们似乎都做同样的事情..。
区别在于返回值。
.map() 返回一个新的 Array 对象通过对原始项目采取某些行动而创建。
.map()
如果该数组中的每个元素都满足所提供的测试函数,则为 .every() 返回一个布尔值-true。与 .every()的一个重要区别是,对于数组中的每个元素,不一定总是调用 test 函数。一旦测试函数对任何元素返回 false,就不再迭代数组元素。因此,测试功能通常应该没有 副作用。
.every()
.forEach() 一无所获-它迭代 Array,对 Array 中的每个项目执行给定的操作。
.forEach()
阅读有关这些和许多其他 MDN 上的数组迭代方法。
Gilly3的回答很棒。我只是想添加一些关于其他类型的“循环遍历元素”函数的信息。
.some()
.filter()
.reduceRight()
归功于 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()的区别是:
R.map()
R.forEach()