结合2个类似的JSON

时间:2016-12-26 12:34:21

标签: javascript jquery json underscore.js

我的目标是组合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'}

3 个答案:

答案 0 :(得分: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];
    }
}

答案 1 :(得分:0)

由于您添加了jQuery标记,我假设您正在使用它。如果是这样,您可以使用jQuery的$.extend方法。

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

答案 2 :(得分:0)

我不完全确定令人厌恶的结果是什么,但这段代码应该指向正确的方向。它将值从obj2复制到obj1,如果值有值(isnt为空或为false):

$pageTitle = 'Change Title';
$token = 'token';
$email = 'email';
return view('auth.passwords.reset', compact('pageTitle','token','email'));