我有以下格式的动态JSON数组,

let main_data = [
   {
      "client":[
         {
            "name":"aaaa",
            "count":"1",
            "filter":{
               "type":{
                  "name":"test3"
               }
            }
         },
         {
            "name":"bbbb",
            "count":"9",
            "filter":{
               "type":{
                  "name":"test2"
               }
            }
         }
      ]
   },
   {
      "compute":[
         {
            "name":"cccc",
            "count":"6",
            "filter":{
               "type":{
                  "name":"test"
               }
            }
         }
      ]
   }
]

此处的键“名称”是唯一的。更新表单时,我将得到如下的json数组,
let new_data = [
   {
      "client":[
         {
            "name":"bbbb",
            "count":"1234",
               "type":{
                  "name":"updated_name"
               }
            }
         }
      ]
   }
]

我需要检查“main_data”中json数组中的“名称”,并删除现有的名称,并使用新的“updated_data”更新到“main_data”中。 (请不要使用Jquery)

预期输出
let main_data = [
   {
      "client":[
         {
            "name":"aaaa",
            "count":"1",
            "filter":{
               "type":{
                  "name":"test3"
               }
            }
         },
         {
            "name":"bbbb",
            "count":"123",
            "filter":{
               "type":{
                  "name":"updated_name"
               }
            }
         }
      ]
   },
   {
      "compute":[
         {
            "name":"cccc",
            "count":"6",
            "filter":{
               "type":{
                  "name":"test"
               }
            }
         }
      ]
   }
]

有什么办法可以做到这一点。任何帮助将非常感激。提前致谢。

最佳答案

试试这个

let main_data = [{
    client: [{
            name: "aaaa",
            count: "1",
            filter: {
                type: {
                    name: "test3"
                }
            }
        },
        {
            name: "bbbb",
            count: "9",
            filter: {
                type: {
                    name: "test2"
                }
            }
        }
    ]
},
{
    compute: [{
        name: "cccc",
        count: "6",
        filter: {
            type: {
                name: "test"
            }
        }
    }]
}
];
let new_data = [{
client: [{
    name: "bbbb",
    count: "1234",
    filter: {
        type: {
            name: "updated_name"
        }
    }
}]
}];

const res = main_data.map((item, index) => {
if (item.client) {
    const clients = item.client.map(client => {
        if (client.name === new_data[0].client[0].name) {
            client = new_data[0].client[0];
        }
        return client;
    });
    return {
        client: clients
    };
}
return item;
});

console.log(res);

关于javascript - 有没有办法用基于 key 的新对象替换JSON数组中的现有对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60967515/

10-10 23:49