如何使用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中有没有这样的方法?