即使.foreach在某些情况下看起来更合乎逻辑,我也可以总是使用.map吗?
Can I always use .map even if .forEach looks more logical in come circumstances?
我看到.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()
}
})
可以。但是你不应该。
它对性能的影响很小,但更重要的是它也是一个维护负担。如果我必须参与并维护您的代码,我会认为有些地方出了问题,或者必须花更长的时间查看那段代码以判断意图。为什么是map
?它应该返回什么东西吗?我理解错了吗?
正如有人在评论中指出的那样,map()将性能较差,因为它返回一个新数组。一个没有显式返回任何东西的函数实际上返回的是undefined,因此你的map将返回一个包含未定义元素的数组,其元素数量与原始数组相同。
如果你不想在每次需要迭代数组时记住或搜索所有这些方法,只要坚持使用旧的for循环,无论如何都要快得多。如果你关心性能,你可以这样写:
for (var i = 0, len = arr.length; i < len; i++)
几乎和反向循环一样快
相关文章:
- 即使光标位于屏幕边缘,也可以跟踪鼠标速度
- 有没有什么方法可以停止Jquery中的animate(也可以停止完整的回调函数)
- 在下拉列表中的页面加载中已经选择了一个选项,该选项也可以更改
- javascript数组既可以是数字数组,也可以是关联数组
- 我需要一个注册按钮,它可以将数据发送到mySQL服务器,也可以在单击时重定向
- 在更改时,如果没有使用jquery更改,也可以删除对select元素的关注
- jQuery聚焦文本框并转到末尾,但也可以设置光标的位置,以便用户可以看到它
- regex某个字符可以存在也可以不存在,但之后什么都没有
- 即使它在 Chrome 浏览器上不起作用,也可以单击
- 即使在从DOM中删除后,也可以保存jQuery对象
- 我无法获得热图.js即使是简单的热图也可以工作
- 在jquery中使用.on时需要帮助,以便它也可以处理动态数据
- JQUERY - .html() 也可以查看 php
- 如何创建在引导程序 3 中也可以纵向扩展的响应式映像
- Socket.io 聊天应用程序,也可以发送图像甚至文件
- 将信息提交到url,也可以打开PDF
- 闪烁也可以隐藏的文本
- 将标签的信息传递到php并在另一个页面中显示(也可以在另一页面中更新)
- HTML5视频,使用Javascript更改源代码,不在Safari上加载,在Chrome上也可以
- 即使.foreach在某些情况下看起来更合乎逻辑,我也可以总是使用.map吗?