2016-12-26 36 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的努力。我会检查并回复。 –