首页 > 解决方案 > JavaScript 嵌套循环未按预期工作

问题描述

我正在尝试使用嵌套循环更改多维数组(三个级别)的特定位置的值,但我似乎无法让它按需要工作。

正如您将在下面的代码中看到的,我的数组以三个数组开头,这三个数组中的每一个都有两个数组。我想要做的是更改每个“更深”数组的第二个值,但新值会有所不同,具体取决于哪个中级数组拥有更深的数组。

数组是这样开始的:

[[['A','X'],['B','X']],
 [['C','X'],['D','X']],
 [['E','X'],['F','X']]]

我正在尝试更改“X”。前两个 exe 在同一个数组数组中,因此它们将获得相同的输出 - 依此类推。这是期望的结果:

[[['A','Output 1'],['B','Output 1']],
 [['C','Output 2'],['D','Output 2']],
 [['E','Output 3'],['F','Output 3']]]

这是我到目前为止所拥有的:

var myArray = [
  [
    ['A', 'X'],
    ['B', 'X']
  ],
  [
    ['C', 'X'],
    ['D', 'X']
  ],
  [
    ['E', 'X'],
    ['F', 'X']
  ]
];
var firstOutput = 1;

for (i = 0; i < 3; i++) {
  for (j = 0; j < 2; j++) {
    myArray[i][j][1] = 'Output ' + firstOutput;
  }
  firstOutput = firstOutput + 1;
}

console.log(myArray);

然而,我实际上得到的是这样的,而不是得到想要的结果:

[[['A','Output 3'],['B','Output 3']],
 [['C','Output 3'],['D','Output 3']],
 [['E','Output 3'],['F','Output 3']]]

因此,不是为第一个数组获取输出 1,第二个为输出 2,第三个为 3,我每次都得到输出 3。

如果有人可以帮助我获得我正在寻找的结果,我将非常感激。

标签: javascriptarraysnested-loops

解决方案


尝试这个 :

var myArray = [
  [
    ['A', 'X'],
    ['B', 'X']
  ],
  [
    ['C', 'X'],
    ['D', 'X']
  ],
  [
    ['E', 'X'],
    ['F', 'X']
  ]
];

let itemIndex = 1;
var newArray = [];
myArray.map((item) => {
	var arr = [];
	item.map((elem) => {
    elem[1] = 'Output ' + itemIndex;
    arr.push(elem);
  });
  newArray.push(arr);
 	itemIndex = itemIndex + 1;
});

console.log(newArray);


推荐阅读