Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript或lodash将对象替换为新对象?_Javascript_Reactjs_Lodash - Fatal编程技术网

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

如何使用javascript或lodash将对象替换为新对象?,javascript,reactjs,lodash,Javascript,Reactjs,Lodash,我的数据结构如下所示 const data = { getSomething: { id: '1', items: [ { id: '1', orders: [ { id: '1', name: 'one1',

我的数据结构如下所示

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 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',
                     }
                 ],
            }
        
我必须将数据中id为1的项替换为上面的项1。我怎样才能用lodash来做呢。或者任何其他我能轻松做到的方式


有人能帮我吗。谢谢。

这将用item1覆盖数据中id为1的item:

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数据={
得到一些东西:{
id:'1',
项目:[
{ 
id:'1',
订单:[
{
id:'1',
名称:'one1',
}
],
分项:[
{id:'1',name:'subitem1'},
{id:'2',name:'subitem2'},
],
},
{ 
id:'2',
订单:[
{
id:'2',
名称:“two1”,
}
],
分项:[
{id:'2',name:'subitem1'},
{id:'3',name:'subitem2'},
],
}
],
}
}
常量item1={
id:'2',
订单:[
{
id:'3',
名称:'one1……',
}
],
分项:[
{id:'2',name:'subitem1….'},
{id:'3',name:'subitem2….'},
],
}
让result=data.getSomething.items.map(item=>item.id==item1.id?({…item1}):item);
log('----Original---',data.getSomething.items);
console.log('----更新---',结果)
const数据={
得到一些东西:{
id:'1',
项目:[{
id:'1',
订单:[{
id:'1',
名称:'one1',
}],
分项:[{
id:'1',
名称:“子项1”
},
{
id:'2',
名称:“子项2”
},
],
},
{
id:'2',
订单:[{
id:'2',
名称:“two1”,
}],
分项:[{
id:'2',
名称:“子项1”
},
{
id:'3',
名称:“子项2”
},
],
}
],
}
}
常数项1={
id:'2',
订单:[{
id:'3',
名称:'one1',
}],
}
Object.assign(data.getSomething.items.find(item=>item.id==item1.id),item1);

控制台日志(数据)请展示任何试图解决您自己问题的尝试,然后您将得到两个id为2的项目,这是有意的吗?不,应该更换。谢谢。lodash中有没有这样的方法?