我有一个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;
我的观点是,如果我将数据用作对象,我不需要使用"对于"稍后在代码中。那么哪种方式会更快?我需要注意的是,稍后在代码中我需要比较大量数据,而且响应时间非常短!
EDIT1:是的,ID是唯一的。
EDIT2:Array vs. Object efficiency in JavaScript,thx @Daria
EDIT3:我需要在获取它们时遍历数组并且我可以使用大量时间来准备数据,但是我需要节省时间,一旦有人从我那里获取数据然后我有大约20ms来做这个和一堆其他的东西。
答案 0 :(得分:1)
如果ID值是唯一的,正如您所说,并且您不需要对对象进行任何特定的顺序,那么在ES5和更早版本中,您几乎肯定需要第二种形式,即对象,而不是阵列。 (在ES6 +中你可能想要一个String.prototype.replaceAt = function(index, character) {
return this.substr(0, index) + character + this.substr(index + character.length);
}
var str = "I!%1$s-I!%2$s TTL!%3$s";
var regex = ['replace', 'replace', 'replace'];
//find position of %
var find = /%/gi,
result, pos = [];
while ((result = find.exec(str))) {
pos.push(result.index);
}
//replace % with regex elements
for (x = 0; x < pos.length; x++) {
str = str.replaceAt(pos[x], regex[x]);
}
document.write(str);
。)