如何根据值访问JSON对象中的特定项
How can I access a specific item in JSON object based on a value?
我在从一组数据中获取我想要的信息时遇到了一点麻烦(见下文)。基本上,我需要得到每种不同类型燃料的价格。一开始我假设数据中的每一项都有4种燃料,所以如果我想要柴油的价格,我就说data.locations[i].fuelTypes[3].price
。然而,假设一家商店没有高级汽油,那么柴油将位于fuelTypes[2]
。
是否有一种方法可以根据其描述在fuelTypes数组中查找项目?现在我唯一能想到的就是遍历fuelTypes数组中的所有内容然后输入
if (data.locations[i].fuelTypes[j].description == 'Diesel') {
gasPrice = data.locations[i].fuelTypes[j].price;
}
但是对于大量的记录来说,这似乎是低效的。
这是我正在处理的数据的简化版本。
var data = {
"locations": [
{
"name": "Store 1",
"fuelTypes": [
{
"description": "Unleaded",
"price": "1.00",
"currency": "USD"
},
{
"description": "Plus",
"price": "2.00",
"currency": "USD"
},
{
"description": "Premium",
"price": "3.00",
"currency": "USD"
},
{
"description": "Diesel",
"price": "4.00",
"currency": "USD"
}
]
},
{
"name": "Store 2",
"fuelTypes": [
{
"description": "Unleaded",
"price": "1.00",
"currency": "USD"
},
{
"description": "Plus",
"price": "2.00",
"currency": "USD"
},
{
"description": "Premium",
"price": "3.00",
"currency": "USD"
},
{
"description": "Diesel",
"price": "4.00",
"currency": "USD"
}
]
}
]
};
由于没有提到,另一种方法是使用JSON路径。
$..fuelTypes[?(@.description=='Diesel')]
将返回:
[{
"description": "Diesel",
"price": "4.00",
"currency": "USD"
},
{
"description": "Diesel",
"price": "4.00",
"currency": "USD"
}]
如果我理解正确的话,关键问题是您需要将数据从索引转换为键=>值。
如果你有一个这样的函数:
function toKeyValue(fuelTypesArray) {
ob = {};
for (var i = 0; i < fuelTypesArray.length; i++) {
ob[fuelTypesArray[i].description] = {
price: fuelTypesArray[i].price,
currency: fuelTypesArray[i].currency
};
}
return ob;
}
然后不像这样不可靠地访问Diesel:
data.locations[i].fuelTypes[3].price
你可以用
toKeyValue(data.locations[i].fuelTypes)["Diesel"].price
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 用javascript从列表对象(JSON的)构建diffrent选项卡
- php请求带有多个对象json-jquery
- AngularJS,过滤器:如何将一个巨大的对象(JSON)变成一个数组
- 动态属性对象 - JSON
- JavaScript 对象 (JSON) 中的动态设置值
- 从数组查询获取对象 JSON 值时出错
- 使用jQuerygetJSON将多维对象JSON转换为HTML
- 需要从 Angular JS 应用程序中的另一个 JSON 对象数组填充 JSON 数组的每个对象 JSON 对象数组
- 嵌套对象JSON排序JavaScript
- PHP在MySQL中保存来自Javascript的对象"JSON.stringify"通过Ajax
- 将JavaScript对象/ JSON转换为PHP数组
- JSON对象.JSON对象内部
- 访问对象的对象- JSON API
- 数组到对象JSON
- Message":"传入的无效对象(JSON数据格式化问题)