合并 2 个相似 JSON
Combining 2 similar JSON
我的目标是组合 2 个相似的 JSON 对象,以便输出的值取自所提供的 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'}
由于您添加了 jQuery 标签,我假设您正在使用它。如果是这样,您可以使用 jQuery 的 $.extend
方法。
var obj1 = {'name': 'xyz', 'age':''},
obj2 = {'name':'', 'age':'66'},
obj3 = $.extend(obj1,obj2);
我不完全确定不理想的结果是什么,但这段代码应该为您指明了正确的方向。它将值从 obj2 复制到 obj1,如果该值有一个值(不为空或假):
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]
}
}
}
既然你说这两个对象是相似的,我将假设这意味着 对于那些在两个对象中共有的键,一个有数据,另一个有''。
我要做出的第二个假设是,对于您希望将其原样复制到新对象的两个对象不通用的任何键。
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];
}
}
我的目标是组合 2 个相似的 JSON 对象,以便输出的值取自所提供的 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'}
由于您添加了 jQuery 标签,我假设您正在使用它。如果是这样,您可以使用 jQuery 的 $.extend
方法。
var obj1 = {'name': 'xyz', 'age':''},
obj2 = {'name':'', 'age':'66'},
obj3 = $.extend(obj1,obj2);
我不完全确定不理想的结果是什么,但这段代码应该为您指明了正确的方向。它将值从 obj2 复制到 obj1,如果该值有一个值(不为空或假):
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]
}
}
}
既然你说这两个对象是相似的,我将假设这意味着 对于那些在两个对象中共有的键,一个有数据,另一个有''。
我要做出的第二个假设是,对于您希望将其原样复制到新对象的两个对象不通用的任何键。
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];
}
}