【发布时间】:2021-08-01 22:54:46
【问题描述】:
复制数组的最后一个位置,并修改接收到最后一个值的对象,但最终也会修改最后一个位置,使两个对象保持不变。
const visitOfTheLunch = visitMounting[visitMounting.length - 1];
visitOfTheLunch.visitPoint.name = 'almoço';
visitOfTheLunch.lunch = true;
visitOfTheLunch.waypoint.estimatedArrival = visitMounting[visitMounting.length - 1].waypoint.estimatedDeparture;
const backHourOfTheLunch = new Date(visitMounting[visitMounting.length - 1].waypoint.estimatedDeparture);
backHourOfTheLunch.setHours(backHourOfTheLunch.getHours() + 2);
visitOfTheLunch.waypoint.estimatedDeparture = backHourOfTheLunch;
console.log(visitMounting[visitMounting.length - 1])
console.log(visitOfTheLunch)
visitMounting = [...visitMounting, visitOfTheLunch];
【问题讨论】:
-
听起来您将同一个对象放在数组的两个位置。然后,当您修改该对象的属性之一的值时,无论您查看数组中的哪个点,您都会看到该修改,因为两个点都指向同一个对象。请使用 minimal reproducible example 来更新您的问题,以展示问题,最好是使用 Stack Snippets(
[<>]工具栏按钮)的 runnable 问题; here's how to do one. -
visitOfTheLunch和visitMounting[visitMounting.length - 1]是同一个对象。对 1 所做的任何更改也是对另一个的更改。
标签: javascript typescript nestjs