JavaScript 嵌套循环未按预期工作
JavaScript nested loop not working as expected
我正在尝试使用嵌套循环更改多维数组(三层)特定位置的值,但我似乎无法让它按预期工作。
正如您将在下面的代码中看到的,我的数组以三个数组开头,这三个数组中的每一个都有两个数组。我想要做的是更改每个 "deeper" 数组的第二个值,但新值会有所不同,具体取决于哪个中级数组包含更深的数组。
数组是这样开始的:
[[['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。
如果有人能帮助我获得我正在寻找的结果,我将不胜感激。
这是我为每个人所做的:
var arr = [
[["A", "X"], ["B", "X"]],
[["C", "X"], ["D", "X"]],
[["E", "X"], ["F", "X"]]
];
var count = 1
var newArray = []
arr.forEach(array => {
var a = []
array.forEach(arr => {
arr[1] = "Output " + count
a.push(arr)
})
count++
newArray.push(a)
})
console.log(newArray)
试试这个:
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);
我正在尝试使用嵌套循环更改多维数组(三层)特定位置的值,但我似乎无法让它按预期工作。
正如您将在下面的代码中看到的,我的数组以三个数组开头,这三个数组中的每一个都有两个数组。我想要做的是更改每个 "deeper" 数组的第二个值,但新值会有所不同,具体取决于哪个中级数组包含更深的数组。
数组是这样开始的:
[[['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。
如果有人能帮助我获得我正在寻找的结果,我将不胜感激。
这是我为每个人所做的:
var arr = [
[["A", "X"], ["B", "X"]],
[["C", "X"], ["D", "X"]],
[["E", "X"], ["F", "X"]]
];
var count = 1
var newArray = []
arr.forEach(array => {
var a = []
array.forEach(arr => {
arr[1] = "Output " + count
a.push(arr)
})
count++
newArray.push(a)
})
console.log(newArray)
试试这个:
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);