【发布时间】:2011-12-02 10:55:45
【问题描述】:
在我的网络应用程序中,我有一个对象,它是从服务器传递的 JSON 字符串构建的。典型的 JSON 字符串可能如下所示:
{
"_id": {
"$binary": "4x3tC1oTBkyvbu43rQj0EQ==",
"$type": "03"
},
"title": "Sony FW31 Lit 973.pdf",
"tags": [
{
"category": "Machine",
"text": "Cold Planers"
},
{
"category": "Attachments",
"text": "Blades"
}
]
}
,
{
"_id": {
"$binary": "s/Svg2CjSUWB1QGJ7e3QeA==",
"$type": "03"
},
"title": "Sony FW31 Lit 974.pdf",
"tags": [
{
"category": "Machine",
"text": "Cold Planers"
},
{
"category": "Attachments",
"text": "Blades"
}
]
},... and lots more items...
JSON 字符串中可能有数千个对象。我可以使用 JSON.parse() 愉快地解析 JSON。这将创建一个对象,我可以使用以下 javascript 对其进行迭代:
var soughtKey='4x3tC1oTBkyvbu43rQj0EQ==';
for (var ii = 0; ii < itemlist.length; ii++) {
var item = itemlist[ii];
if (item._id$binary==soughtKey){
doSomething(item);
}
}
这似乎相当低效。我宁愿这样做:
doSomething(itemlist[soughtKey]);
但大概要做到这一点,我需要将我的顶级对象转换为某种键索引数组?我认为没有办法使用它们的 id 值来访问特定的 itemlist 项目?
假设不是,将我的顶级 itemlist 对象转换为对象数组的最有效方法是什么,其中原始项目的所有属性仍然可以通过点符号访问,并且任何项目都可以通过其直接访问ID? (我知道每个嵌套项都会有一个_id,但我不会提前知道结构的其余部分)。在将 JSON 对象转换为数组与保持原样和使用我的低效循环之间是否存在任何性能权衡?
非常感谢。
【问题讨论】:
标签: javascript arrays performance json parsing