如何在JSON中按类别获取项目数据?

时间:2011-11-23 10:03:20

标签: jquery json

我有数据:

var category = [
    {id:0, name : "category_1"} , 
    {id:2, name : "category_2"},
];

var items = [
    {id:0, name : "a", category_id : 0} , 
    {id:1, name : "b", category_id : 1} , 
    {id:2, name : "c", category_id : 0}, 
    {id:3, name : "d", category_id : 1}
];

我的问题是:我如何通过 items.category_id 类别获取 items.name category.name ? 谢谢你的帮助

5 个答案:

答案 0 :(得分:1)

JSON不是SQL数据库,因此您不需要拥有两个JSON结构或文件。 只需改写:

{
  '0': {"name" : "category_1",
        "items": {
           "0": "a", 
           "2": "c"
        }
       },
  '2': {"name" : "category_2",
        "items": { 
           "2": "c", 
           "3": "d"
        }
       }
}

答案 1 :(得分:0)

在JavaScript中试用:

var item = items[0]; // Get the first item

var cat = null;
$.each(category, function(k, v){
    if( v.id == item.category_id )
    {
        cat = this;
        return false; // Return because we got a match
    }
});

// If we got a match
if(cat)
    alert(cat.name);

答案 2 :(得分:0)

这里有两个功能可以按类别ID查找项目,按ID

查找类别
var findItemByCategoryId = function(id) {
    var i = null;
    var result = []
    for (i = 0; items.length > i; i += 1) {
        if (items[i].category_id === id) {
            result.push(items[i]);
        }
    }
    return result;
};

// example:
// categoryItems = findItemByCategoryId(0);
// for(var i=0; i<items.length; i++) {
//     //alert(items[i].name)
// }

var findCategoryById = function(id) {
    var i = null;
    for (i = 0; category.length > i; i += 1) {
        if (category[i].id === id) {
            return category[i];
        }
    }
};
// example:
// alert(findCategoryById(0).name);

答案 3 :(得分:0)

var result = [];
var temp = [];

$.each(category,
    function(index, c) {
        $.each(items,
        function(i, value) {
            if (value.category_id == c.id) {
                temp.push(value.name);
            }
        });
        result.push({
            category_name: c.name,
            values: temp
        });
        temp = [];
 });
 console.log(result);

答案 4 :(得分:0)

对于这些数据:

var category = [
{id:0, name : "category_1"} , 
{id:2, name : "category_2"}
];

 var items = [
{id:0, name : "a", category_id : 0} , 
{id:1, name : "b", category_id : 1} , 
{id:2, name : "c", category_id : 2}, 
{id:3, name : "d", category_id : 3}
];

你有这个功能:

      function getItemName(cat_id){
            $.each(items, function(i, item){
                if(item.category_id == cat_id)
                    return item.name;
            })
      }

使用类别ID调用,如下所示:getItemName(2); 它会返回您的商品名称。