0

哪个更快:迭代数组或对象。当我需要执行诸如从中间删除任何元素之类的操作时会发生什么?

var a = {"A1":1, "B1":2, "C1":3};

或者

var a = ["A1", "B1", "C1"];
4

3 回答 3

5

迭代数组应该比迭代对象更快,但这取决于:

  1. 对象/数组的大小
  2. 您的密钥是否连续
  3. 各种其他优化器废话

在较旧的浏览器上,从数组中删除元素曾经非常昂贵(因为它需要更改每个后续元素的键),但在现代浏览器上这不是问题。

说真的,只使用最适合您项目的表示,然后担心以后如果它成为问题的优化。

于 2012-12-11T16:26:35.063 回答
3

哪个更快 - 遍历数组或对象?

数组的存储效率可能更高,而且它的索引也是可预测的(不需要查找)。它应该更快,但您不会注意到小型集的差异。

当我需要执行诸如从中间删除任何元素之类的操作时会发生什么?

使用对象很容易;你只要打电话delete a.A1;。这是一个O(1)手术。

使用数组,使用a.splice(1,1);,需要对所有项目进行重命名,如果经常发生,这会相当慢(O(n))。

于 2012-12-11T16:25:40.730 回答
1

一个并不比另一个快或慢。使用对您的项目最有意义的任何一个。

至于删除,对于数组看splice,对于对象尝试delete

于 2012-12-11T16:23:29.303 回答