2015-08-18 41 views
0

我有一个API,它返回一个集合,需要重新排序才能在后面的代码中获得更好的性能。现在,我不知道我要离开的对象对于关键对象的速度

var collection = [{ 
    "id": "d3d2d", 
    "something": "win" 
}, ...] 

的收集和使用以后:

for(var i in collection){bla = collection[i]something;} 

或作为对象

var object = { 
    "d3d2d": { 
     "something": "win" 
    } 
}; 

所以,我可以在以后使用它是这样的

bla = object[i.need.id].something; 

我的点t是如果我使用数据作为对象,我不需要在代码中使用“for”。那么哪种方式会更快?我需要注意的是,在后面的代码中,我需要比较大量的数据,并且我的响应时间非常短。

EDIT1:是的,ID是唯一的。

EDIT2:Array vs. Object efficiency in JavaScript,THX @Daria

EDIT3:我需要通过数组迭代时,我把它们抓下来,我可以使用大量的时间来准备数据,但我需要节省时间一旦有人从获取数据然后我有20ms左右的时间来做这个和其他一些东西。

+1

是的,对象查找比遍历整个阵列远胜快得多。因此,如果以后需要进行大量比较,将数组集合转换为该对象是有意义的(尽管[不应该使用'for in'](http://stackoverflow.com/q/500504/1048572)为了那个原因)。 – Bergi

+1

那么,它是否需要*订购*?那么没有太多的选择。 – deceze

+1

它们是不同用途的不同结构。如果您需要迭代对象,则无论如何您都需要一个循环。 – DontVoteMeDown

回答

1

提供的ID值是唯一的,正如你所说的,你不需要任何特定顺序的对象,然后在ES5和更早,你几乎可以肯定希望第二个形式,对象,不数组。 (在ES6 +你可能想要一个Map。)