迭代数组vs对象

时间:2012-12-11 16:19:35

标签: javascript arrays object

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

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

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

3 个答案:

答案 0 :(得分:5)

迭代数组应该比迭代一个对象更快,但它依赖于:

  1. 对象/数组的大小
  2. 你的钥匙是否有条件
  3. 各种其他优化废话
  4. 在较旧的浏览器中,从数组中删除元素曾经非常昂贵(因为它需要在每个后续元素上更改键),但在现代浏览器上这不是一个问题。

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

答案 1 :(得分:3)

  

哪一个更快 - 在数组或对象上进行迭代?

可以更有效地存储数组,并且其索引也是可预测的(不需要查找)。它应该更快,但你不会注意到小集合的差异。

  

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

对象很容易;你只需致电delete a.A1;。这是O(1)操作。

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

答案 2 :(得分:1)

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

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