大家好,我正在尝试将新元素推送到数组中的所有对象,但似乎没有更新。
知道我在这里做错了什么吗?
这是我的对象,其中包含 instalments
数组。
{ _id: 5cf7d4fcc9c5846a69b48d41,
offer: 5cf7d4fcc9c5846a69b48d40,
instalments:
[ { paid: false,
_id: 5cf7d4fcc9c5846a69b48d44,
description: 'Some deacription about yhis instalment',
instalmentAmount: 100000,
dueTo: 2019-06-06T23:00:00.000Z },
{ paid: false,
_id: 5cf7d4fcc9c5846a69b48d43,
description: 'Some deacription about yhis instalment',
instalmentAmount: 100000,
dueTo: 2019-06-13T23:00:00.000Z },
{ paid: false,
_id: 5cf7d4fcc9c5846a69b48d42,
description: 'Some deacription about yhis instalment',
instalmentAmount: 91152,
dueTo: 2019-06-20T23:00:00.000Z } ],
user: 5cf53a1a8481923f72939940,
createdAt: 2019-06-05T14:43:08.706Z,
updatedAt: 2019-06-05T14:43:08.706Z,
__v: 0 }
我想要做的是将offer
添加到所有instalments
对象
我尝试执行此操作的方式如下。
instalmentsGroup
是上面的对象,然后我访问 instalments
和 map
const instalments = await instalmentsGroup.instalments.map(
instalment =>
Object.assign({}, instalment, { offer: instalmentsGroup.offer })
);
最佳答案
您的问题出在 await
上。不需要 await
,因为 .map
不会返回 Promise
,因此它不是异步的。
如果您想就地编辑对象,可以使用 .forEach
,它将循环遍历 instalments
数组中的每个对象并添加 order
属性。
参见下面的示例:
const obj = {
_id: "5cf7d4fcc9c5846a69b48d41",
offer: "5cf7d4fcc9c5846a69b48d40",
instalments: [{
paid: false,
_id: "5cf7d4fcc9c5846a69b48d44",
description: 'Some deacription about yhis instalment',
instalmentAmount: 100000,
dueTo: "2019 - 06 - 06 T23: 00: 00.000 Z"
},
{
paid: false,
_id: "5cf7d4fcc9c5846a69b48d43",
description: 'Some deacription about yhis instalment',
instalmentAmount: 100000,
dueTo: "2019 - 06 - 13 T23: 00: 00.000 Z"
},
{
paid: false,
_id: "5cf7d4fcc9c5846a69b48d42",
description: 'Some deacription about yhis instalment',
instalmentAmount: 91152,
dueTo: "2019 - 06 - 20 T23: 00: 00.000 Z"
}
],
user: "5cf53a1a8481923f72939940",
createdAt: "2019 - 06 - 05 T14: 43: 08.706 Z",
updatedAt: "2019 - 06 - 05 T14: 43: 08.706 Z",
__v: 0
}
const offer = obj.offer;
obj.instalments.forEach(instalment => {
instalment.offer = offer;
});
console.log(obj.instalments);
或者,您可以使用 .map()
就像您必须将每个对象映射到其自身一样,并使用可以从原始对象获取的附加 offer
属性。只需确保删除 await
即可。这种方法将创建一个新的更改数组(并且不会修改原始对象)
参见下面的示例:
const obj = {
_id: "5cf7d4fcc9c5846a69b48d41",
offer: "5cf7d4fcc9c5846a69b48d40",
instalments: [{
paid: false,
_id: "5cf7d4fcc9c5846a69b48d44",
description: 'Some deacription about yhis instalment',
instalmentAmount: 100000,
dueTo: "2019 - 06 - 06 T23: 00: 00.000 Z"
},
{
paid: false,
_id: "5cf7d4fcc9c5846a69b48d43",
description: 'Some deacription about yhis instalment',
instalmentAmount: 100000,
dueTo: "2019 - 06 - 13 T23: 00: 00.000 Z"
},
{
paid: false,
_id: "5cf7d4fcc9c5846a69b48d42",
description: 'Some deacription about yhis instalment',
instalmentAmount: 91152,
dueTo: "2019 - 06 - 20 T23: 00: 00.000 Z"
}
],
user: "5cf53a1a8481923f72939940",
createdAt: "2019 - 06 - 05 T14: 43: 08.706 Z",
updatedAt: "2019 - 06 - 05 T14: 43: 08.706 Z",
__v: 0
}
const offer = obj.offer;
const instalments = obj.instalments.map(instalment => ({...instalment, offer}));
console.log(obj.instalments);
关于javascript - 如何将新元素推送到数组中的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56463115/