假设我有这个JSON对象:
var images = {"success":"true", "images":[
{"id":"1234","url":"asdf","tags":["cookie","chocolate"]},
{"id":"5678","url":"qwer","tags":["pie","pumpkin"]}
]};
使用jQuery,获取id为5678的图片url最有效的方法是什么?
假设我有这个JSON对象:
var images = {"success":"true", "images":[
{"id":"1234","url":"asdf","tags":["cookie","chocolate"]},
{"id":"5678","url":"qwer","tags":["pie","pumpkin"]}
]};
因为它是一个数组,而且你要查找的是内嵌属性,而不仅仅是一个简单的数组值,所以没有真正高效的方法来查找它。有一种蛮力机制,只需遍历整个数组,并将每个 id 与你要查找的内容进行比较。
如果你会在相同的数据结构中多次查找这些信息,并且想加快速度,那么可以将现有的数据结构转换为另一种更有效的按 ID 访问的数据结构,如下所示:
var imagesById = {
"1234": {"url":"asdf","tags":["cookie","chocolate"]},
"5678": {"url":"qwer","tags":["pie","pumpkin"]}
}
那么,通过id查找对象就像这样简单:
imagesById["1234"]
url = $.grep(images.images, function(item) { return item.id === '5678' })[0].url;
var images = {"success":"true", "images":[
{"id":"1234","url":"asdf","tags":["cookie","chocolate"]},
{"id":"5678","url":"qwer","tags":["pie","pumpkin"]}
]};
var inner = images.images,
targetId = '5678',
found = null;
for (var i=0; i<inner.length; i++) {
if (inner[i][id] === targetId) {
found = inner[i];
// do stuff...
break;
}
}
您需要遍历该数组:
$.each(images.images,function(i,img) {
if(img.url == "5678") {
//do whatever you want with this url
}
}