基于公共属性合并对象数组

时间:2015-02-23 12:40:49

标签: javascript object merge

我需要合并两个对象数组,我知道有很多方法可以做到,但我只是好奇最好的方法是什么。

例如 - 我有以下数组,

array1 :[{ id :1, name : a, class :c1}, {id :2, name :b, class :c2}]
array2 :[{ id:1, score :20}, {id:2, score :30}]

我想要的是

array3 :[{id :1, name :a, score :20}, {id:2, name:b, score: 30}]

编辑: 试过代码

for(var ind1  in array1){
       for(var ind2 in array2){
           if(array1[ind1].id  == array2[ind2].id){
              array1[ind1].score = array2[ind2].score;
                            }
                     }
               }

array1为我提供了所需的数组

1 个答案:

答案 0 :(得分:0)

我将如何做到这一点。我可能会添加一些其他条件来防止错误,如果id不匹配,但基本上这是校长。

array1 = [{ id :1, name : "a", class :"c1"}, {id :2, name :"b", class :"c2"}];
array2 = [{ id:1, score :20}, {id:2, score :30}];


var length1 = array1.length;
var length2 = array2.length
var array3 = [];

for( var i = 0; i < length1; i++){ 

    joined = {id: array1[i].id, name: array1[i].name};

        for(var j = 0; j < length2; j++){ 


        if(array2[j].id == array1[i].id){ // Check if the id's match.

            joined.score = array2[j].score; // If the match add score.
            break;

        }else{ 

            continue; // If they don't move on.

        }

        array3[i] = joined; // Add to output array.

    }

}


console.log(array3);

这是展示它的小提琴。

http://jsfiddle.net/k7Lv7ub9/