4

2 つの JSON フィードがあります。1 つはコースに関する基本的な情報を含み、2 番目はより管理的な性質の情報を含みます。ここに私が意味するもののサンプルがあります。

最初

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

2番目

{"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}
   }
}

望ましい出力

{"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}}
}

「望ましい出力」オプションを追加すると、理解しやすくなると思います。目的の出力領域に 1 つの例しか入れていませんが、ID が一致するすべてのレコードをマージしたいと考えています。

助言がありますか?

ありがとう。

4

1 に答える 1

7
$.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
});
于 2013-02-26T14:49:38.343 に答える