javascript - for (x in y) VS for (i = 0; i < y.length; i++) 其中 x 是对象数组

标签 javascript loops for-loop

哪里y是一个对象数组,

y = [
    {property:"",property2:""},
    {property:"",property2:""},
    {property:"",property2:""},
    {property:"",property2:""},
    {property:"",property2:""}
]

有人可以告诉我为什么吗

for (x in y) {
    console.log(x[y].property);
}

比慢很多倍,

for (i = 0; i < y.length; i++) {
    console.log(x[y].property);
}

最佳答案

如下benchmark ;你会看到,在 chrome 版本 62.0.3202 中,for...in... 速度更快。

一种或另一种循环样式的速度取决于运行它的 javascript 引擎

因此,如果您想知道哪个更快以及为什么您应该开始查看您正在使用的 node.js 版本;然后寻找有关特定引擎是如何制造的解释。

enter image description here

<小时/>

this关于 node.jsv5.xv6.x 的其他基准测试。

你会看到速度改变了多少

enter image description here

因此,如果在 v5.1.281.102 中使用 for-in 进行了更优化,那么在 v6.1.361 中则更好使用与 for 循环关联的 Object.keys

关于javascript - for (x in y) VS for (i = 0; i < y.length; i++) 其中 x 是对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50991831/

相关文章:

javascript - jQuery/JavaScript : Triggering a click function on same-page anchors

javascript - 如何遍历<tr>中的元素

javascript - 按需更新多个 Highcharts 实例的最佳性能

python - Python 中的列表迭代

r - R中的for循环问题

javascript - 自动滚动滚动条Javascript

Javascript "document.getElementById"通配符循环?

Python 循环内的递归调用。它是如何工作的?

php - for循环后,返回的数组是错误的

javascript - 如何实现 Ruby 的 Array.include?在 JavaScript 中?