2013-05-30 85 views
-2

對象1:通過匹配另一個對象的鍵值來更新一個對象的屬性值?

var obj1 = { 
    location : 'lol', 
    radius : '22' 
} 

對象2:

var obj2 = { 
    location : 'omg', 
    spice : 'gravey', 
    radius : '8' 
} 

我需要一個遞歸函數來更新obj1匹配從obj2該屬性的值:

obj1 = update(obj1,obj2); 

//console.log(obj1); 
//{ 
// location : 'omg', 
// radius : '8' 
//} 

只有原生JavaScript。

+1

你嘗試過什麼了嗎? –

回答

1

如何

function update(o1, o2){ 
    var temp = {}; 
    for(var key in o1){ 
     if (o1.hasOwnProperty(key)){ 
      temp[key] = o1[key]; 
      if (o2.hasOwnProperty(key)){ 
       temp[key] = o2[key]; 
      } 
     } 
    } 
    return temp; 
} 
1

這很簡單。只需循環遍歷第一個對象,並使用第二個對象的值(如果存在)。

function update(obj1, obj2){ 
    var ret = {}; 
    for(var prop in obj1){ 
     ret[prop] = obj2[prop] || obj1[prop]; 
    } 
    return ret; 
} 
+0

+1,雖然它會失敗的布爾值.. –

+0

@ GabyakaG.Petrioli:是的,我只是很快黑了。我沒有真正添加任何驗證:) –

+0

這將從Obj2中設置不在Obj1中的值 – meouw

相關問題