在2个不同的数组javascript中组合对象

时间:2013-06-28 18:49:48

标签: javascript json for-loop

我有2个javascript请求,可以在一个对象数组中返回结果。

第一个对象如下所示:

[Object {user_id="6", meta_value="5", user_nicename="richbai90", more...}, 
Object {user_id="7", meta_value="1", user_nicename="testing123", more...}]

第二个看起来像这样

[Object { usr="6", score="1 / 1", quiz_id="1"}, 
Object { usr="7", score="1 / 1", quiz_id="1"}, 
Object { usr="7", score="1/5", quiz_id="3"}]

数组2是数组1的详细信息

我需要的是一种在javascript中将它们联系在一起的方法,这样我就可以将对象2中的信息放在需要与对象1中的信息对应的文档中。我能想到的最简单的方法是组合用户ID相同的数组,但这似乎比我初想的要困难。这是我最初的方法:

       $.post(AjaxRequest.ajaxurl, {
 action: "get_data"
})
 .done(function (json) {

 console.log(json);
 var data = json;


 for (var i = 0; i < json.length; i++) {
     if (AjaxRequest.user_ID == json[i].user_id && json[i].Quizes == "1") {
         $("#result_list").append("you have taken " + json[i].Quizes + " quiz");
     } else if (AjaxRequest.user_id == json[i].user_id && json[i].Quizes != "1") {
         $("#result_list").append("you have taken " + json[i].Quizes + " quizzes");
     } else {
         $("#result_list").append(json[i].user_nicename + " has taken " + json[i].Quizes + " quizzes" + "<br>");
     }

 }



 getDetails(json);






})

 .fail(function (jqxhr, textStatus, error) {
 var err = textStatus + ', ' + error;
 console.log('1st Request Failed: ' + err);
});




function getDetails(data) {

 $.post(AjaxRequest.ajaxurl, {
     action: "get_details"

 })
     .done(function (details) {

     console.log(data);
     console.log(details);

     for (var i = 0; i < data.length; i++) {
         for (var i2 = 0; i2 < details.length; i++) {
             while (details[i2].usr == data[i].user_id) {
                 console.log(details[i2]);
                 break;
             }
         }


     }




     $("#loading").fadeOut('fast', function () {
         $("#result_list").fadeIn('fast');
     });

 })

     .fail(function (jqxhr, textStatus, error) {
     var err = textStatus + ', ' + error;
     console.log('2nd Request Failed: ' + err);
 });


}

在此代码块中是工作正在进行的地方

for (var i = 0; i < data.length; i++) {
         for (var i2 = 0; i2 < details.length; i++) {
             while (details[i2].usr == data[i].user_id) {
                 console.log(details[i2]);
                 break;
             }
         }


     }

问题是,一旦while循环中断,它似乎没有进入for循环的下一次迭代,正如我预期的那样,data [i]变得未定义。如果我取消休息;然后data [i]总是== details [i2],从而导致浏览器崩溃。

也许我让它变得比它需要的更难?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用二维数组。