Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于公共属性合并对象数组_Javascript_Object_Merge - Fatal编程技术网

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

Javascript 基于公共属性合并对象数组,javascript,object,merge,Javascript,Object,Merge,我需要合并两个对象数组,我知道有很多方法可以做到这一点,但我只是好奇什么是最好的方法 e、 我有以下数组 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}] 编辑: 试码

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

e、 我有以下数组

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为我提供了所需的数组

,下面是我将如何做到这一点。如果id不匹配,我可能会添加一些其他条件以防止出现错误,但在basic中这是主要的

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);
array1=[{id:1,名称:“a”,类:“c1”},{id:2,名称:“b”,类:“c2”}];
array2=[{id:1,得分20},{id:2,得分30}];
var length1=阵列1.长度;
var length2=阵列2.length
var array3=[];
对于(var i=0;i
这是一把小提琴


“我想要的是”。。。你自己已经试过什么了?请发布你的代码。如果你已经知道怎么做,这不是stackoverflow的问题。相反,您应该在codereview.stackexchange.com上发布完成的代码。那个网站是为改进工作代码而设计的。我只是在寻找更好的方法。当前代码的复杂度为n*m。@credenson这将被视为“示例代码”,这与代码审查无关。这段代码中没有上下文。与此不同,CR不希望上下文被剥离。