gpt4 book ai didi

javascript - 在每个循环中只有数组中的最后一个元素被连接起来

转载 作者:行者123 更新时间:2023-11-30 13:44:15 27 4
gpt4 key购买 nike

问题:只有数组的最后一个元素在循环中的 finalOutput 中被连接

let listA = [
[1, 2],
[7, 8],
[4, 5],
[11, 12]
];
let listB = [
['x', 'y', 'z'],
['d', 'd', 'd'],
['f', 'y', 's']
];

let finalOutput = [];
for (let i = 1; i <= listA.length - 1; i++) {
let dataIndx = 0;
for (let item of listB) {
if (item[1] !== 'd') {
item[1] = listA[i][dataIndx];
dataIndx++;
}
}
finalOutput = finalOutput.concat(listB);
}

console.log('Undesired output:', finalOutput);

当前不需要的输出:

[
['x', '11', 'z'], ['d', 'd', 'd'], ['f', '12', 's'],
['x', '11', 'z'], ['d', 'd', 'd'], ['f', '12', 's'],
['x', '11', 'z'], ['d', 'd', 'd'], ['f', '12', 's'],
]

预期的 finalOutput 值为

[
['x', '7', 'z'], ['d', 'd', 'd'], ['f', '8', 's'],
['x', '4', 'z'], ['d', 'd', 'd'], ['f', '5', 's'],
['x', '11', 'z'], ['d', 'd', 'd'], ['f', '12', 's'],
]

最佳答案

这里的问题是您多次遍历 listB 并且每次都修改该列表(引用同一个数组)。由于数组是一个引用,最后一个将被记录在您的结果集中。尝试克隆 listB:

let listA= [[1,2],[7,8],[4,5],[11,12]];
let listB= [['x','y','z'],['d','d','d'],['f','y','s']];

let finalOutput = [];
for (let i = 1; i <= listA.length - 1; i++) {
let dataIndx = 0;
let listBB = listB.map(x => ([...x])); // "cloning an array of arrays"
for(let item of listBB){

if (item[1] !== 'd') {

item[1] = listA[i][dataIndx];
dataIndx++;
}
finalOutput = finalOutput.concat(listBB);
}

}
console.log(finalOutput)

关于javascript - 在每个循环中只有数组中的最后一个元素被连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59613949/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com