2016-12-26 35 views
0

我的目標是組合2個相似的JSON對象,以便輸出將從提供的json對象中獲取其值。例如:組合2個類似的JSON

var obj1 = {'name': 'xyz', 'age':''}, obj2 = {'name':'', 'age':'66'} 
//would like to have some functionality like below that gives me the output 
obj3 = combine(obj1,obj2) 
//desired output below. 
obj3 = {'name': 'xyz', 'age':'66'} 
+3

'OBJ 2 = {名稱:「」:年齡:'66' }'是無效的JSON格式 –

+0

如果您決定要發佈的東西所以一定要確保它是正確的格式第一。 Downvoted,直到你這樣做。 –

+0

@Mayank Pandeyz您應該爲您誤導的代碼道歉,您已經刪除了該代碼。 –

回答

1

既然你說的兩個對象是相似的,我會認爲這意味着對於那些按鍵,在兩個對象中有一個是有數據而另一個有''的。

我要製作的第二個假設是不常見的兩種,你希望它被複製爲對象的任何鍵是給新的對象。

var obj1 = {'a': 'b', 'c': ''}; 
var obj2 = {'a': '', 'c': 'd', 'e': 'f'}; 
var obj3 = {}; 
var key; 

for (key in obj1) { 
    if(obj1[key] === '') { 
     obj3[key] = obj2[key]; 
    } else { 
     obj3[key] = obj1[key]; 
    } 
} 

for(key in obj2) { 
    if(!(key in obj3)) { 
     obj3[key] = obj2[key]; 
    } 
} 
+0

這是一個工作代碼,Prathik。我會接受它。 –

0

由於您添加了jQuery標記,我假設您正在使用它。如果是這樣,你可以使用jQuery的$.extend方法。

var obj1 = {'name': 'xyz', 'age':''}, 
    obj2 = {'name':'', 'age':'66'}, 
    obj3 = $.extend(obj1,obj2); 
+1

我試過$ .extend,但那不會給你想要的輸出 –

+0

你是對的。爲了它的工作,你不能有空的屬性。嘗試刪除所有這些事先像這裏建議:http://stackoverflow.com/questions/23774231/how-do-i-remove-all-null-and-empty-string-values-from-a-json-object – rabelloo

0

我並不完全確定殘疾人的結果是什麼,但是這段代碼應該指向正確的方向。從OBJ2,它的值複製到OBJ1,如果該值有一個值(帶心不是空或false):

combine = function(a, b) { 
var bKeys = Object.keys(b) 
for (var i = 0; i < bKeys.length; i++) { 
    var key = bKeys[i] 
    if (b[key]) { 
    a[key] = b[key] 
    } 
} 
} 
+0

感謝Martin的努力。我會檢查並回復。 –