遍历数组并将修改的项目复制到另一个数组returns仅重复最后一组修改

Looping through an array and copying the modified items into another array returns only repetitions of the last set of modifications

我正在尝试基于一个名为 weekArray 的现有数组模型创建一个名为 availabilityArray 的多周数组,该数组包含一组工作日。新数组应该从 weekArray 中的原始项目开始,然后新修改的项目将在每个 for 循环循环后按组推入。现在的问题是 availabilityArray 中的所有项目集看起来都很相似,因为之前的项目集被更改为最后修改的项目集。

有人能告诉我我做错了什么吗?这是我的代码:

const weekArray = [
        this.monday,
        this.tuesday,
        this.wednesday,
        this.thursday,
        this.friday,
        this.saturday,
        this.sunday
      ];
      console.log(weekArray);

      const availabilityArray = [];
      const newArray = [];
      for (let i = 0; i < 3; i++) {
        weekArray.forEach(item => {
          //Add 1 week to each week number
          item.weekNumber = item.weekNumber + i;
          //Add 7 days to each date
          item.date = new Date(Date.parse(item.date) + i * 7 * 8.64e7);
          newArray.push(item);
        });
        availabilityArray.push(...newArray);
      }
      console.log(availabilityArray) //It prints out a repetition of the last set of pushed in objects.

正如@IceMetalPunk 在评论中指出的那样,您需要使用要推送的数据创建一个新对象。我已尝试根据您提供的代码重现 weekArray 包含的数据,但这些值可能与您所拥有的不完全相同。

const weekArray = [
  {"weekNumber":25,"date":1561359600000},
  {"weekNumber":25,"date":1561446000000},
  {"weekNumber":25,"date":1561532400000},
  {"weekNumber":25,"date":1561618800000},
  {"weekNumber":25,"date":1561705200000},
  {"weekNumber":25,"date":1561791600000},
  {"weekNumber":25,"date":1561878000000}
];

console.log(weekArray);

const availabilityArray = [];
const newArray = [];

for (let i = 0; i < 3; i++) {
  weekArray.forEach(item => {
    //Create a new item with an incremented weekNumber value
    //and a date 7 days after the given date value
    let newItem = {
      "weekNumber": item.weekNumber + i,
      "date": item.date + (i*7*8.64e7)
    };
    newArray.push(newItem);
  });
  availabilityArray.push(...newArray);
}

console.log(availabilityArray)