在javascript

时间:2018-11-21 05:29:54

标签: javascript arrays json

假设有两个json对象为

1。

{
  "conditionTemp": null,
  "value": null,
  "variableValue": "flowParameters_3"
}

{
  "conditionTemp": {
    "functionID": "func_1",
    "parameters": [{}]
  },
  "value": null,
  "variableValue": null
}

2。

{
  "conditionTemp": {
    "functionID": "func_1",
    "parameters": [{
        "conditionTemp": null,
        "value": null,
        "variableValue": "flowParameters_3"
      },
      {
        "conditionTemp": {
          "functionID": "func_1",
          "parameters": [{}]
        },
        "value": null,
        "variableValue": "null"
      },
      {}
    ]
  },
  "value": null,
  "variableValue": null
}

即 第二个对象将具有(“ conditionTemp”,“ value”,“ variable”),

第一个“ conditionTemp”将具有“ functionID”,“ parameters”

在“参数”中,我们可以没有任何编号。对象。如果在参数内部,则对象的“ conditionTemp”值为不为空,我们必须检查其中的参数对象。 如果参数对象为空,则必须在其中插入**第一个对象。**

因此对于上述json,在将第一个对象添加到第二个对象后, 生成的json将是

{
  "conditionTemp": {
    "functionID": "func_1",
    "parameters": [{
        "conditionTemp": null,
        "value": null,
        "variableValue": "flowParameters_3"
      },
      {
        "conditionTemp": {
          "functionID": "func_1",
          "parameters": [{
                 "conditionTemp": null,
                 "value": null,
                 "variableValue": "flowParameters_3"
           }]
        },
        "value": null,
        "variableValue": "null"
      },
      {}
    ]
  },
  "value": null,
  "variableValue": null
}

1 个答案:

答案 0 :(得分:1)

第一级是这样的:

var obj_a = {
  "conditionTemp": {
    "functionID": "func_1",
    "parameters": [{
        "conditionTemp": null,
        "value": null,
        "variableValue": "flowParameters_3"
      },
      {
        "conditionTemp": {
          "functionID": "func_1",
          "parameters": [{}]
        },
        "value": null,
        "variableValue": "null"
      },
      {}
    ]
  },
  "value": null,
  "variableValue": null
};

var obj_b = {
  "conditionTemp": null,
  "value": null,
  "variableValue": "flowParameters_3"
};

var final_obj = Object.keys(obj_a).reduce(function(data, key) {
  if (obj_a[key] == null && obj_b[key] != null)
    data[key] = obj_b[key];
  else
    data[key] = obj_a[key];

  return data;
}, {});

console.log(final_obj);

第二级和更高级别会比较棘手。格式总是这样吗?在您的示例中,值可能是(字符串,空值,对象数组)...是否有其他未提及的格式或者您可能不知道?