gpt4 book ai didi

javascript - JSON 嵌套对象与 Javascript 数组

转载 作者:行者123 更新时间:2023-11-29 16:24:24 24 4
gpt4 key购买 nike

在我的网络应用程序中,我有一个对象,它是根据从服务器传递的 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 值访问特定的项目列表项目?

假设不是,将我的顶级项目列表对象转换为对象数组的最有效方法是什么,其中原始项目的所有属性仍然可以通过点表示法访问,并且任何项目都可以通过其直接访问ID? (我知道每个嵌套项都有一个 _id,但我不会提前知道结构的其余部分)。在将 JSON 对象转换为数组与保持原样并使用我的低效循环之间是否存在任何性能权衡?

非常感谢。

最佳答案

为了按值定位某些东西,您必须遍历对象并测试各个键的值。没有办法避免这种情况。

为了构建查找对象,您必须遍历整个对象一次并从第一个对象收集值并将它们存储在第二个对象中。这在前期是密集型的,但如果您必须通过要用作键的值重复查找内容,那么稍后将等同于节省。

所以问题是,你这样做一次(你在 JSON 返回的特定部分之后)还是在你的页面中重复发生(你在代码的 A 部分使用对象的一部分,然后是另一个B 部分中的对象的一部分等)?如果是前者,那么循环遍历整个对象并创建查找可能不值得增加开销。如果是后者,那么从长远来看,您可能会受益于创建一种更简单的方法来通过适当的键检索所​​需信息。

创建查找对象可能是这样的:

var byIds = {};

for (var ii = 0, l = items.length; ii < l; ++ii) {
var item = items[ii];

byIds[item._id.$binary] = {
'title': item['title'],
'tags': item['tags']
};
}

关于javascript - JSON 嵌套对象与 Javascript 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com