我看到.map()
和.forEach()
在大多数情况下的工作方式类似,但我知道.map()
更适合根据转换输入返回一些结果,而.forEach()
只是迭代项目并对每个项目应用一些操作。
我知道在这种情况下它很适合:
var customersList = dataItems.map(function (item) {
return item.isCustomer
})
但我发现将.forEach()
抛出脑袋更容易,只需在我的所有代码中使用.map()
。在这样的情况下使用.map()
在概念上是否正确?
domElements.map(function (el) {
if (el.enabled) {
el.show()
} else {
el.hide()
}
})
答案 0 :(得分:2)
你可以。但你不应该。
这是轻微的性能损失,但更重要的是它也是一个维护负担。如果我必须来维护你的代码,我会认为出现了问题,或者需要花费更长的时间来查看那段代码来衡量意图。为什么map
?它应该归还吗?我不正确理解吗?
这是一个比表现更重要的问题。
答案 1 :(得分:0)
正如有人在评论中指出的那样,map()的性能会降低,因为它会返回一个新数组。一个没有显式返回任何内容的函数实际上返回undefined,因此你的map将返回一个未定义数组,其元素数与原始数组相同。
如果您不想在每次需要迭代数组时记住或谷歌查看所有这些方法,只需坚持使用旧的for循环,无论如何都要快得多。如果您关心性能,可以写下如下内容:
for (var i = 0, len = arr.length; i < len; i++)
几乎与向后循环一样快。