微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Javascript json对象如何将更改的数据移动到新对象

如何解决Javascript json对象如何将更改的数据移动到新对象

我有 2 个 json 对象。

一个保存来自客户端表单的数据。

{
       "name": "Example name","company": {
         "name": "new company","size": "FIVE","licenseInfo": {
            "isActive": "0"
         }
       }
}

在我的另一个对象中,我知道在此表单中修改了哪些字段。如果 value 为 true,则它已更改。我使用的插件为我提供了这些信息。

{
       "name": true,"company": { 
         "size": true,"licenseInfo": {
            "isActive": true
         }
       }
}

我想比较这 2 个对象并获得一个仅包含更改数据的提交对象,如下所示。 公司名称未更改,我不想提交 company.name

{
       "name": "Example name","company": { 
         "size": "FIVE","licenseInfo": {
            "isActive": "0"
         }
       }
}

我可以手动一个一个地控制字段,但我想创建一个动态比较函数,以便我可以在其他表单上使用它。

解决方法

按键迭代(比较)并添加输入值...

const input = { "name": "Example name","company": { "name": "new company","size": "FIVE","licenseInfo": { "isActive": "0" } } }
const compare = { "name": true,"company": { "size": true,"licenseInfo": { "isActive": true } } }

function filter(input,compare) {
    const output = {};
    for (const key in compare)
        output[key] = typeof compare[key] == "object"
            ? filter(input[key],compare[key])
            : input[key];

    return output;
}
console.log(filter(input,compare));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。