如何将键和值从一个对象复制到另一个对象而不复制值

时间:2015-03-06 10:33:01

标签: jquery json javascript

我有2个对象

json1 = {
    "name": "padd",
    "value": "1",
    "parentName": "",
    "parentValue": "",
    "children": [],
    "canDisplay": true,
    "showRecord": true
}

json2 = {
    "name": "note",
    "value": "1",
    "parentName": "",
    "parentValue": "",
    "children": [{
        "name": "padd",
        "value": "1",
        "parentName": "",
        "parentValue": "",
        "children": [],
        "canDisplay": true,
        "showRecord": true
    }],
    "canDisplay": true,
    "showRecord": true
}

json1中遗漏的密钥应从json2添加,并且json1json2中匹配的密钥值也不应替换为json2json1

2 个答案:

答案 0 :(得分:0)

以下代码将扫描json2并将json2的所有属性添加到json1中,json1中缺少这些属性,同时保留json1已经具有的那些属性的值。

for (var prop in json2) {
    if (json1.hasOwnProperty(prop)) {
        // move on to next property
        continue;
    }
    json1[prop] = json2[prop];
}

jsFiddle

答案 1 :(得分:0)

您可以使用Object.keys方法循环遍历json1的键,如果在json2中找不到键,则将其设置为空字符串。 e.g。

var keys1 = Object.keys(json1);
for (var key_i=0; key_i<keys1.length; key_i++) {
  var key = keys1[key_i];
  if (typeof json2[key] === 'undefined') {
    json2[key] = '';
  }
}

编辑:

如果要将值从json1复制到json2,如果不是在json2中,则更改:

json2[key] = '';

json2[key] = json1[key];