Jac*_*ack 3 html javascript ajax jquery json
我有问题,请你帮我!我有一个json数组:
"category" : [
{
id: 1,
product: [{id : product_1, type : ball}]
},
{
id : 2,
product :[{id : product_2, type : pen}]
}
]
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果我有一个链接,例如:http:// test/category/1那么,我怎样才能按ID = 1的类别获取产品信息?谢谢你的任何建议:)
假设您的数据结构如下所示:
var data = {
"category" : [
{
id: 1,
product: [{id : product_1, type : ball}]
},
{
id : 2,
product :[{id : product_2, type : pen}]
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过搜索数组,在id == 1的类别数组中找到该项:
function findId(data, idToLookFor) {
var categoryArray = data.category;
for (var i = 0; i < categoryArray.length; i++) {
if (categoryArray[i].id == idToLookFor) {
return(categoryArray[i].product);
}
}
}
var item = findId(data, 1);
// item.id, item.type
Run Code Online (Sandbox Code Playgroud)
这是一种在一行中完成它而不使用for的方法:
function filterById(jsonObject, id) {return jsonObject.filter(function(jsonObject) {return (jsonObject['id'] == id);})[0];}
Run Code Online (Sandbox Code Playgroud)
然后,如果你想获得id = 2的对象,你只需使用:
var selectedObject = filterById(yourJson['category'], 2);
Run Code Online (Sandbox Code Playgroud)
然后根据您的示例,selectedObject将获取此值:
{
id : 2,
product :[{id : product_2, type : pen}]
}
Run Code Online (Sandbox Code Playgroud)
有一个缺点:旧的浏览器,如IE8,不支持filter(),所以你需要为旧的浏览器兼容性添加此代码:https: //developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects /阵列/过滤器#兼容性
| 归档时间: |
|
| 查看次数: |
28959 次 |
| 最近记录: |