JavaScript数组如何在索引处获取项目

时间:2015-09-18 13:20:48

标签: javascript arrays performance

我正在尝试了解get item at index如何在JavaScript中的数组中工作。

例如,假设我有一个for迭代一个包含数千(或数百万)个项目的数组。哪种打印项目的最佳方式(性能最佳)?

// Option 1
for (int i = 0; i < array.length; i++) {
    var data = array[i];
    console.log( data.ID, data.name, data.date, data.description );
}

// Option 2
for (int i = 0; i < array.length; i++) {
    console.log( array[i].ID, array[i].name, array[i].date, array[i].description );
}

是选项1还是选项2?或者使用第一个或第二个选项是一回事吗?或者有更好的方法来做到这一点吗?

我知道例如Java ArrayList中的get()以这种方式工作,所以显然最好的方法是选项1,因为它每次调用get()方法时都会检查范围。

public E get(int index) {
    rangeCheck(index);

    return elementData(index);
}

private void rangeCheck(int index) {
    if (index >= size)
        throw new IndexOutOfBoundsException(outOfBoundsMsg(index));
}

JavaScript是否以类似的方式工作?

这里的“大问题”实际上是 JavaScript数组如何在索引上获取项目

注意:我试图寻找在数组中获取元素的最佳方法,但我能找到的只是迭代数组的最佳方法。这不是我想从这个问题中得到的东西!

1 个答案:

答案 0 :(得分:3)

修改

忘掉我说过的一切。对于非常古老的浏览器来说确实如此对于新的(使用Chrome,Firefox,IE11和Edge测试),这些示例之间几乎没有差异。

我已经测试了一个包含1亿条记录的数组,差别是&lt; 1毫秒。

选项2显然稍微更快,没有任何真正重要的。