Json对象与unqiue id合并

我有多个json对象

json1 = [ {'category_id':1,'name':'test1' }, {'category_id':1,'name':'test2' }, {'category_id':1,'name':'test3' }, {'category_id':2,'name':'test2' }, {'category_id':3,'name':'test1' } ]; json2 = [{'category_id':1,'type':'test1'}]; json3 = [ {'category_id':1,'color':'black'}, {'category_id':2,'color':'black'}, {'category_id':3,'color':'white'} ]; 

我期待这样的输出

 final = [ {'category_id':1,'name':'test1','type':'test`','color':'black' }, {'category_id':1,'name':'test2','type':'test`','color':'black' }, {'category_id':1,'name':'test3','type':'test`','color':'black' }, {'category_id':2,'name':'test2','color':'black' }, {'category_id':3,'name':'test1','color':'white' } ]; 

因为我有很长的json对象。 循环是好主意还是不好? 是否有任何内置的function做同样的事情。

使用下划线可以通过以下方式实现:

演示小提琴

 var jsons = [json1, json2, json3]; var final = {}; // merge all data _.each(jsons, function (jsonArr) { _.each(jsonArr, function (json) { final[json.category_id] = _.extend({}, final[json.category_id], json); }); }); // map it back onto json1 var finalArr = _.map(json1, function (json) { return final[json.category_id]; }); console.log(finalArr); 

finalArr的最终值:

在这里输入图像说明

这里是你如何可以在普通的JavaScript中做同样的事情。 🙂

 var final = {}; var jsons = [json1, json2, json3]; for(var i=0;i<jsons.length;i++){ final[i]=jsons[i]; } 

小提琴

编辑:

那么,你将不得不以编程的方式来做!