如何通过ID获取json数组中的数据

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的类别获取产品信息?谢谢你的任何建议:)

jfr*_*d00 9

假设您的数据结构如下所示:

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)

  • 它的旧.但为什么不标记为答案?工作完美. (2认同)

OMA*_*OMA 7

这是一种在一行中完成它而不使用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 /阵列/过滤器#兼容性