В моем веб-приложении есть объект, созданный из строки 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 с помощью JSON.parse ().Это создает объект, который я могу перебрать, используя следующий 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, но я не буду знать остальную часть структуры заранее).И есть ли какие-то компромиссы между преобразованием объекта JSON в массив и оставлением его как есть и использованием моего неэффективного цикла?
Большое спасибо.