我可以使用两种变体来处理充满数据的对象:
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来处理特定对象,更改对象的属性,遍历所有对象。
答案 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/