繁体   English   中英

如何使用 javascript 或 lodash 用新对象替换对象?

[英]How to replace the object with the new object using javascript or lodash?

我有如下数据结构,

const data = {
    getSomething: {
        id: '1',
        items: [
            { 
                 id: '1',
                 orders: [
                     {
                         id: '1',
                         name: 'one1',
                     }
                 ],
                 subItems: [
                     { id: '1', name: 'subitem1' },
                     { id: '2', name: 'subitem2' },
                 ],
            },
            { 
                 id: '2',
                 orders: [
                     {
                         id: '2',
                         name: 'two1',
                     }
                 ],
                 subItems: [
                     { id: '2', name: 'subitem1' },
                     { id: '3', name: 'subitem2' },
                 ],
            }
        ],
    }
}

现在我有另一个数据,如下所示,

const item1 = { 
                 id: '2',
                 orders: [
                     {
                         id: '3',
                         name: 'one1',
                     }
                 ],
            }
        

我必须用上面的 item1 替换数据中 id 1 的项目。 我怎样才能使用 lodash 做到这一点。 或任何其他我可以轻松完成的方式。

有人可以帮我解决这个问题吗? 谢谢。

 const data = { getSomething: { id: '1', items: [{ id: '1', orders: [{ id: '1', name: 'one1', }], subItems: [{ id: '1', name: 'subitem1' }, { id: '2', name: 'subitem2' }, ], }, { id: '2', orders: [{ id: '2', name: 'two1', }], subItems: [{ id: '2', name: 'subitem1' }, { id: '3', name: 'subitem2' }, ], } ], } } const item1 = { id: '2', orders: [{ id: '3', name: 'one1', }], } Object.assign(data.getSomething.items.find(item => item.id === item1.id),item1); console.log(data);

这将使用 item1 覆盖数据中 id 为 1 的项目:

const data = {
    getSomething: {
        id: '1',
        items: [
            { 
                 id: '1',
                 orders: [
                     {
                         id: '1',
                         name: 'one1',
                     }
                 ],
                 subItems: [
                     { id: '1', name: 'subitem1' },
                     { id: '2', name: 'subitem2' },
                 ],
            },
            { 
                 id: '2',
                 orders: [
                     {
                         id: '2',
                         name: 'two1',
                     }
                 ],
                 subItems: [
                     { id: '2', name: 'subitem1' },
                     { id: '3', name: 'subitem2' },
                 ],
            }
        ],
    }
}

const item1 = { 
                 id: '2',
                 orders: [
                     {
                         id: '3',
                         name: 'one1',
                     }
                 ],
            }

const oldItem = data.getSomething.items.find(item => item.id == 1);
Object.assign(oldItem, item1);
console.log(data);

你看起来像这样吗?

 const data = { getSomething: { id: '1', items: [ { id: '1', orders: [ { id: '1', name: 'one1', } ], subItems: [ { id: '1', name: 'subitem1' }, { id: '2', name: 'subitem2' }, ], }, { id: '2', orders: [ { id: '2', name: 'two1', } ], subItems: [ { id: '2', name: 'subitem1' }, { id: '3', name: 'subitem2' }, ], } ], } } const item1 = { id: '2', orders: [ { id: '3', name: 'one1.......', } ], subItems: [ { id: '2', name: 'subitem1....' }, { id: '3', name: 'subitem2....' }, ], } let result = data.getSomething.items.map(item=> item.id===item1.id ? ({...item1}): item); console.log('-----Original----', data.getSomething.items); console.log('-----Updated-----', result);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM