假设我有一个JSON数组,每个对象包含一堆不同的键/值。我知道如何使用Javascript来定位特定的键/值,但是如果我想搜索整个JSON文件以查找项目,然后在同一个对象中找到相关对,该怎么办?
例如,我如何扫描以下JSON中的“Moby Dick”,然后还找到与该标题绑定的作者?
"store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
}
}
答案 0 :(得分:2)
假设这是你的对象:
var store= {
"book": [
{...}, {...}
]
}
然后你可以试着像这样过滤它:
var foundBooks = store.book.filter(function(book) { return book.title ==="Moby Dick"});
正确指出 @JLRiche foundBooks
是一个数组。为了访问第一个匹配,它将与我们对所有数组的操作方式相同:
var book = foundBooks[0];
答案 1 :(得分:0)
你必须迭代列表,你可以创建一些自定义函数,如:
function findTitle(title) {
for (var i = 0; i < data.store.book.length; i++) {
if (data.store.book[i].title == title) {
return data.store.book[i];
}
}
}
所以你可以这样做:
var book = findTitle("Moby Dick"),
author = book.author;
答案 2 :(得分:0)
您可以循环浏览book
个对象,找到book.title === "Moby Dick"
的位置,然后查看book.author
该特定对象。