哪一个更快:迭代一个数组或一个对象。当我需要执行诸如从中间删除任何元素的操作时会发生什么?
var a = {"A1":1, "B1":2, "C1":3};
或
var a = ["A1", "B1", "C1"];
答案 0 :(得分:5)
迭代数组应该比迭代一个对象更快,但它依赖于:
在较旧的浏览器中,从数组中删除元素曾经非常昂贵(因为它需要在每个后续元素上更改键),但在现代浏览器上这不是一个问题。
说真的,只需使用最适合您项目的代表,然后担心以后优化如果它成为问题。
答案 1 :(得分:3)
哪一个更快 - 在数组或对象上进行迭代?
可以更有效地存储数组,并且其索引也是可预测的(不需要查找)。它应该更快,但你不会注意到小集合的差异。
当我需要执行诸如从中间删除任何元素的操作时会发生什么?
对象很容易;你只需致电delete a.A1;
。这是O(1)
操作。
对于使用a.splice(1,1);
的数组,需要重命名所有项目,如果经常发生(O(n)
)则相当慢。
答案 2 :(得分:1)