根据匹配的对象值将对象从一个数组合并到另一个数组中

时间:2016-05-27 16:05:38

标签: jquery arrays

如何使用jQuery在child_array.cat_parent_id == parent_array.cat_id上合并以下两个数组?

parent_array:

[{
  "cat_name" : "Fruit",
  "cat_id" : 77
}, {
  "cat_name" : "Vegetables",
  "cat_id" : 221
}]

我想将child_array合并到parent_array中:

[{
  "cat_name" : "Bananas",
  "cat_id" : 79,
  "cat_parent_id" : 77
},{
  "cat_name" : "Apples",
  "cat_id" : 80,
  "cat_parent_id" : 77
}, {
  "cat_name" : "Carrots",
  "cat_id" : 222,
  "cat_parent_id" : 221
}]

这就是我希望输出的样子:

[{
  "cat_name" : "Fruit",
  "cat_id" : 77,
  "cat_children": [
     {
       "cat_name" : "Bananas",
       "cat_id" : 79
     },
     {
       "cat_name" : "Apples",
       "cat_id" : 80
     }
  ]
}, {
  "cat_name" : "Vegetables",
  "cat_id" : 221,
  "cat_children": [
     {
       "cat_name" : "Carrots",
       "cat_id" : 222
     }
  ]
}]

1 个答案:

答案 0 :(得分:0)

你不一定需要jQuery才能这样做......只需编写一些嵌套循环并进行一些检查。您的JSON结构可以进行大大优化以实现此目的,但以下功能将以它的方式实现:

function merge(_parent,_children){
    var result = _parent;
  for(x in _children){
    var parentID = _children[x].cat_parent_id;
    for(y in _parent){
      if(_parent[y].cat_id == parentID){      
        if(!result[y].cat_children){
            result[y].cat_children = [];
        }
        result[y].cat_children.push(_children[x]);
      }
    }
  }
  return result;
}