0x4*_*2D2 112 javascript foreach map-function
我一直想知道它们之间有什么区别.他们似乎都在做同样的事情......
gil*_*ly3 211
不同之处在于返回值.
.map() 返回通过对原始项执行某些操作而创建的新对象数组.
.every() 返回一个布尔值 - 如果此数组中的每个元素都满足提供的测试函数,则返回 true.一个重要的区别.every()是,可能并不总是为数组中的每个元素调用测试函数.一旦测试函数对任何元素返回false,就不再迭代数组元素.因此,测试功能通常应该没有副作用.
.forEach() 什么都不返回 - 它迭代Array,为Array中的每个项执行给定的操作.
编辑:如果您愿意,这是MSDN文档.
rap*_*pes 82
gilly3的答案很棒.我只想添加一些关于其他类型的"循环元素"函数的信息.
.every() (第一次迭代器返回false或falsey时停止循环).some() (第一次迭代器返回true或者truthy时停止循环).filter() (创建一个新数组,包括filter函数返回true的元素,省略返回false的元素).map() (根据迭代器函数返回的值创建一个新数组).reduce() (通过重复调用迭代器,传入以前的值来构建一个值;查看详细信息的规范;对于汇总数组的内容和许多其他内容很有用).reduceRight() (如减少,但按降序而不是按升序运行)信用:TJCrowder For-each在JavaScript中的数组?
小智 5
对上述伟大答案的另一个考虑是链接.使用forEach()你不能链,但是使用map(),你可以.
例如:
var arrayNumbers = [3,1,2,4,5];
arrayNumbers.map(function(i) {
return i * 2
}).sort();
Run Code Online (Sandbox Code Playgroud)
使用.forEach(),你不能执行.sort(),你会收到错误.