【问题标题】:How to merge multiple JSON objects to one single json object in javascript如何在javascript中合并2个json对象
【发布时间】:2019-08-16 12:04:54
【问题描述】:

示例: 下面有 2 个具有不同值的 json 对象,我想将其作为一个最终的 Json 对象并将新值附加到最终结果

让 json1= { "b":"test1", "a":"test3", “类型”:“样本 1” }

让 json2= { “乙”:{ "结束日期":"ddd1", “开始日期”:“dd01” }, “一种”:{ “结束日期”:“31”, “开始日期”:“01” }, “类型”:“样本2” }

预期结果应如下所示

让结果 = { “乙”:{ "结束日期":"ddd1", "开始日期":"dd01", “XYZ”:“测试1” }, “一种”:{ “结束日期”:“31”, "开始日期":"01", “XYZ”:“测试3” }, }

谁能帮忙使用 JavaScript 或 loadash 功能

【问题讨论】:

  • type 属性怎么样?
  • XYZ 属性是什么?
  • 请把你的问题说清楚一点。
  • 我不希望结果对象中有类型属性。
  • “XYZ”新属性Key和对应的Value在object1中

标签: javascript angular


【解决方案1】:

您可以使用 rest 运算符删除类型属性,然后将值从第一个对象分配给合并对象的新属性

let mergeObjects = (a, b) => {

    let {type, ...rest} = b; //remove type property
    for(let prop in rest){
        if(a[prop]){
            rest[prop].xyz = a[prop]; 
        }
    }
    return rest;
}

let Object3= mergeObjects(Object1, Object2);
console.log(Object3);

【讨论】:

  • 非常感谢您的快速回复
  • 当然是@VijayKesanupalli,如果我的回答有帮助,请点赞。
【解决方案2】:


可以这么简单:

let Object1 ={"b":"test1","a":"test3","type":"sample1"};let Object2 ={"b":{"endDate":"ddd1","startDate":"dd01"},"a":{"endDate":"31","startDate":"01"},"type":"sample2"}

let Object3 = Object2;
for (let i in Object3){
  Object3[i]["XYZ"] = Object1[i]
}
Object3["type"] = "12345"
console.log(Object3)

【讨论】:

  • 没问题@VijayKesanupalli,记得给我的答案投票,如果你认为它解决了你的问题,请选择它。
  • 如果我想在结果对象中用一些不同的值(例如:type:12345)修改类型属性值,请告知
  • 你能详细说明一下吗?不知道你在问什么
  • 你的结果如下 { "b": { "endDate": "ddd1", "startDate": "dd01", "XYZ": "test1" }, "a": { " endDate”:“31”,“startDate”:“01”,“XYZ”:“test3”},“type”:“sample2”}
  • 但我期待 [ "b": { "endDate": "ddd1", "startDate": "dd01", "XYZ": "test1" }, "a": { "endDate ": "31", "startDate": "01", "XYZ": "test3" }, "type": "12345" ]
猜你喜欢
  • 2018-10-06
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 2022-09-29
  • 2021-01-11
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多