项目的对象或数组

时间:2018-10-11 05:54:06

标签: javascript

我可以使用两种变体来处理充满数据的对象:

let global_obj = {
    "id0": { /*big object 0*/},
    "id1": { /*big object 1*/},
    "id2": { /*big object 2*/}
};

和:

let global_arr = [
    { id: "id0" /*big object 0*/},
    { id: "id1" /*big object 1*/},
    { id: "id2" /*big object 2*/}
];

因此,我可以将装满数据的大对象保存在全局数组或全局对象内。在性能(遍历,删除,添加新对象)方面哪种方法更好?

我将经常通过其ID来处理特定对象,更改对象的属性,遍历所有对象。

3 个答案:

答案 0 :(得分:1)

在这种情况下,我会使用一个对象,因为通过 id 查找元素更加容易/快捷。如果元素的索引/顺序很重要,则对象在这里无济于事,您需要使用数组。

基本上:

  • 对象:键控集合
  • 数组:有序集合

但是,如果环境支持ES2015,则常规对象和数组不是唯一的选择。 ES2015引入了几种用于集合的API:Map, Set, WeakMap and WeakSet

答案 1 :(得分:1)

正如您提到的那样,您将“经常通过其ID寻址特定对象”;使用对象将是您的明智选择。与在数组中查找对象(即O(n))相比,访问对象的键是在O(1)中完成的,因此Object的性能会更好。

答案 2 :(得分:1)

您应该做对您来说更方便的事情,这很可能不会有所作为。

但是,通常,如果顶层对象很小,则数组总是比哈希表/对象快(内部对象的大小无关紧要)。如果顶层结构很大,那么您应该考虑要在顶层结构上执行的操作的big-o复杂性。参见http://bigocheatsheet.com/