这只是我对数组在 JS 中的工作方式的误解。感谢 Nicholas Tower 的回答。
原帖:
标题:在 for 循环中使用函数修改二维数组的关闭问题。
我有一个包含一组字符串 (rotationsSet) 的数组,我想用 8 个随机版本的旋转集填充另一个数组。我的二维数组最终用最后一组随机字符串填充了 8 次。
我是 Web 开发人员和 JS 的新手,但从我读到的内容来看,这似乎是一个封闭问题。我尝试在 initShuffledSets 函数中使用 forEach 循环而不是 for 循环,但以相同的结果结束。
var numberOfCubes = 8;
var rotationsSet = [
'rotateX(90deg)',
'rotateX(-90deg)',
'rotateY(90deg)',
'rotateY(-90deg)',
'rotateX(180deg)'
];
var shuffledRotationsSets = Array(numberOfCubes).fill(['']);
// Fisher-Yates array shuffle
function shuffle(array) {
for (let i = array.length - 1; i > 0; i--) {
let j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
}
function initShuffledSets() {
for (let z = 0; z < shuffledRotationsSets.length; z++) {
shuffledRotationsSets[z] = rotationsSet;
shuffle(shuffledRotationsSets[z]);
}
}
initShuffledSets();
for 循环中的 console.log 显示 8 个不同的数组(这是我想要的),而 for 循环外的控制台日志显示 8 个与最后一个混洗数组对应的相同数组。
慕娘9325324
相关分类