首页 > 解决方案 > Javascript推入两个for循环覆盖数组

问题描述

我想循环一个对象数组和另一个数组来创建一个新数组。

This.wholeWeek = [{test: "1"}, {test2: "2"}, {test3: "3"}]

This.courtData = [1, 2, 3]

结果我想得到:

[{test: "1", court: 1}, {test: "1", court: 2}, {test: "1", court: 3}, {test2: "2", court: 1}, {test2: "2", court: 2}, {test2: "2", court: 3}, {test3: "3", court: 1}, {test3: "3", court: 2}, {test3: "3", court: 3}]

代码:

this.courtTD = [];
for (let i = 0; i < this.wholeWeek.length; i++) {
  for (let s = 1; s <= this.courtData.length; s++) {
    const week = this.wholeWeek[i];
    week.court = s;
    this.courtTD.push(week);
  }
}

但我的方法给了我:

[{test: "1", court: 3}, {test: "1", court: 3}, {test: "1", court: 3}, {test2: "2", court: 3}, {test2: "2", court: 3}, {test2: "2", court: 3}, {test3: "3", court: 3}, {test3: "3", court: 3}, {test3: "3", court: 3}]

非常感谢您的每一次帮助!谢谢!

标签: javascriptloopspush

解决方案


你可以试试这个代码:

let arr = [{test: "1"}, {test2: "2"}, {test3: "3"}];
let arr_1 = [1, 2, 3];
let result = [];

for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr_1.length; j++) {
            let obj = JSON.parse(JSON.stringify(arr[i])); // copy of object
            obj.court = arr_1[j];
            result.push(obj);
    }
}

您应该制作一个对象的副本。


推荐阅读