jQuery $.each 与 JavaScript .forEach

新手上路,请多包涵

采用以下两种方法使用 jQuery 从 DOM 中删除元素数组:

 var collection = [...]; //  An array of jQuery DOM objects

// Using jQuery iteration
$(collection).each(function(index, element) { element.remove(); });

// Or as pointed out by Barmar
$(collection).remove();

// Using native iteration
collection.forEach(function(element) { element.remove(); });

在操作上有什么真正的区别吗?我希望,除非浏览器解释器/编译器足够聪明,否则前一种方法会有额外的不必要的开销,尽管如果数组很小的话可能很小。

原文由 Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 334
2 个回答

操作上 有点模糊,但这里是如何实现 $.each 的。

each 实施

[].forEach() 很可能在每个浏览器的本机代码中实现。

在不进行性能测试的情况下,它们非常相似。尽管如果您可以完全删除至少几 kb 的 jQuery,则浏览器不需要加载。

原文由 dpix 发布,翻译遵循 CC BY-SA 4.0 许可协议

对原始问题的评论非常适合您想要删除单个项目的特定场景。

更一般地说,还有一些其他差异:

  1. Array.forEach() 显然要求你遍历一个数组。 jQuery 方法将使您遍历 对象 的 _属性_。

  2. jQuery.each() 允许短路。查看这篇文章,其中提到使用“some()”和“every()”用纯 js 做类似的事情:

如何像调用 break 一样短路 Array.forEach?

原文由 Eric 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏