2017-01-25 8 views
1

私は2つのオブジェクトobj1とobj2を持っています。 obj2にobj1にないキーがある場合、そのobj2のキーと値のペアがobj1に追加されます。例えばJavaScript内の最初のオブジェクトに存在しないオブジェクトを別のオブジェクトから追加する方法

obj1 = { 
 
a:1, 
 
b:2 
 
} 
 
obj2 = { 
 
b:4, 
 
c:3 
 
}

C:3がOBJ1に置かれることになります。

これは私が試みたものですが、私の脳はこれによって円で動いています。私は2番目のオブジェクトを変更することはできません(必要はありません)。obj2にも存在する場合は、obj1の値を保持する必要があります。存在しなかったと値のペア:

function extend(obj1, obj2) { 
 
    
 
    function comparison(obj1,obj2){ 
 
     var object1keys = Object.keys(obj1) 
 
     var object2keys = Object.keys(obj2) 
 
     var flag = 0 
 
     for(var i = 0; i<object2keys.length;i++){ 
 
      flag = 0 
 
      for(var j = 0; j<object1keys.length;j++){ 
 
       if(object2keys[i] === object1keys[j]){ 
 
        flag = 1 
 
        console.log(i,j) 
 
        break 
 
       } 
 
       if(flag = 0 && j == object1keys.length - 1){ 
 
        obj1[i] = obj2[j] 
 
       } 
 
      } 
 
     } 
 
     return obj1 
 
    } 
 
return obj1 
 
}
編集:それは特定のキーを追加することが含まれていなかった他の質問のように見えたので、これはユニークな質問です。

+1

可能性のある重複した[上書きせずにJSのオブジェクトをマージ](http://stackoverflow.com/questions/7549574/merge-js-objects-without-overwriting) –

答えて

4

Object.keys()Object.hasOwnProperty()機能を使用して簡単な解決策:

var obj1 = {a:1,b:2}, obj2 = {b:4,c:3}; 
 

 
Object.keys(obj2).forEach(function(k) { 
 
    if (!obj1.hasOwnProperty(k)) obj1[k] = obj2[k]; 
 
}); 
 

 
console.log(obj1);

+0

すごいことをお願いします私が思ったよりずっと簡単だった。私は確かにそのくぼみから山を作った – Milos

+0

@MlowBunjay、あなたは大歓迎です – RomanPerekhrest

0

これは動作するはずです。

function extend(obj1, obj2) { 
 
    Object.keys(obj2).forEach(function(key) { 
 
    obj1[key] = obj2[key]; 
 
    }) 
 
    return obj1; 
 
} 
 

 
console.log(extend({ 
 
    a: 1, 
 
    b: 2 
 
}, { 
 
    b: 3, 
 
    c: 4 
 
}))

関連する問題