按属性获取JSON对象

pen*_*rob 5 javascript json

假设我有这个JSON对象:

var images = {"success":"true", "images":[
     {"id":"1234","url":"asdf","tags":["cookie","chocolate"]},
     {"id":"5678","url":"qwer","tags":["pie","pumpkin"]}
]};
Run Code Online (Sandbox Code Playgroud)

获取ID为5678的图像网址的最有效方法是什么?可以使用jQuery.

jfr*_*d00 12

因为它是一个数组而你正在寻找一个嵌入式属性,而不仅仅是一个简单的数组值,所以找不到它真的是一种超级有效的方法.有一种蛮力机制,只需走过阵列,并将每个id与你正在寻找的内容进行比较.

如果您要在同一数据结构中多次查找这些类型的东西并且想要加快速度,那么您可以将现有的数据结构转换为更高效的ID数据结构,这样可以通过ID进行访问:

var imagesById = {
    "1234": {"url":"asdf","tags":["cookie","chocolate"]},
    "5678": {"url":"qwer","tags":["pie","pumpkin"]}
}
Run Code Online (Sandbox Code Playgroud)

然后,通过id查找对象就像这样简单:

imagesById["1234"]
Run Code Online (Sandbox Code Playgroud)


use*_*621 6

url = $.grep(images.images, function(item) { return item.id === '5678' })[0].url;
Run Code Online (Sandbox Code Playgroud)