对于vs Key Object速度

时间:2015-08-18 13:12:58

标签: javascript for-loop key-value

我有一个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来做这个和一堆其他的东西。

1 个答案:

答案 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);。)