Merge two JSON objects that have a common element

I have two JSON channels. One of them contains basic information about the course, the second contains information that is more administrative in nature. Here is an example of what I mean.

FIRST

{"courses": {"course":{"id":"4","title":"Using a computer","body":"36"}} ,{"course":{"id":"5","title":"Job hunting online","body":"29"}} } 

SECOND

 {"courses": {"4": {"id":4,"name":"Online Basics","title":"Using a computer","shortname":"onlinebasics","height":640,"width":980,"html5":1,"url":"\/sites\/default\/files\/courses\/onlinebasics\/wrapper.html","started_on":"","bundle_only":true,"progress":false,"completed_on":"2012\/10\/31 00:12:39","on_planner":true} ,"5": {"id":5,"name":"Online Basics","title":"OB2 Job hunting online","shortname":"onlinebasics","height":640,"width":980,"html5":1,"url":"\/sites\/default\/files\/courses\/onlinebasics\/wrapper.html","started_on":"","bundle_only":true,"progress":false,"completed_on":"2012\/11\/24 02:14:51","on_planner":false} } } 

DESIRED EXIT

 {"courses": {"course":{"id":"4","title":"Using a computer","body":"36","name":"Online Basics","title":"Using a computer","shortname":"onlinebasics","height":640,"width":980,"html5":1,"url":"\/sites\/default\/files\/courses\/onlinebasics\/wrapper.html","started_on":"","bundle_only":true,"progress":false,"completed_on":"2012\/10\/31 00:12:39","on_planner":true}} } 

I hope that adding the โ€œdesired exitโ€ option will make it easier to understand. Despite the fact that I only placed 1 example in the desired output area, I need all the records where the identifier match matches.

Any suggestions?

Thanks.

+4
source share
2 answers
 $.when($.get("feed1.json"), $.get("feed2.json")).done(function(basics, admin) { var basiccourses = basics[0].courses, admincourses = admins[0].courses; // merge all basic course objects into the admin courses object for (var i=0; i<basiccourses.length; i++) { var basic = basiccourses[i]; if (basic.id in admincourses) // by extending the course object $.extend(admincourses[basic.id], basic); else // or just copying it over admincourses[basic.id] = basic; } // now admincourses has all information combined }); 
+7
source

I want the same implementation in Typescript.

0
source

All Articles