javascript中的无序多维数组被复制
我在javascript中洗牌数组时遇到问题。 多维数组将其行洗牌两次,结果与返回的数字完全相同。 我不想要相同的数字,但我想要不同的洗牌结果javascript中的无序多维数组被复制,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我在javascript中洗牌数组时遇到问题。 多维数组将其行洗牌两次,结果与返回的数字完全相同。 我不想要相同的数字,但我想要不同的洗牌结果 this.pairs = [ [0, 1, 2, 3] ]; this.shuffled = [ [shuffle(this.pairs[0])], [shuffle(this.pairs[0])] ]; console.log(this.shuffled); 其中,洗牌功能为: function shuffle(array
this.pairs = [
[0, 1, 2, 3]
];
this.shuffled = [
[shuffle(this.pairs[0])],
[shuffle(this.pairs[0])]
];
console.log(this.shuffled);
其中,洗牌功能为:
function shuffle(array) {
for (var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
return array;}
它只是随机化数组值
现在,当我尝试shuffle([0,1,2,3])时,只要调用同一个函数两次就可以了。
但是当我写shuffle(这个.pairs[0]);无论我调用它多少次,它都返回完全相同的值。有什么帮助吗
更新
然后,我尝试按照建议将它们添加到不同的变量中,但仍然不起作用
this.pairs = [
[0, 1],
[0, 1]
];
var level1 = this.pairs[0];
var level2 = this.pairs[0];
this.shuffled = [
shuffle(level1),
shuffle(level2)
];
console.log(this.shuffled);
这同样适用于:
this.pairs = [
[0, 1],
[0, 1]
];
var level1 = shuffle(this.pairs[0]);
var level2 = shuffle(this.pairs[0]);
this.shuffled = [
level1,
level2
];
console.log(this.shuffled);
尝试将随机函数结果分配给一个变量。问题在于您使用的是this.name, 它将始终指向相同的引用 所以结果将被最后一次洗牌调用覆盖。 因此,您需要在每次洗牌后将值复制到一个新变量。
函数shuffleMultiArray(multArr){
function shuffleMultiArray(multArr) {
for (let i = 0; i < multArr.length; i++) {
for (let j = 0; j < multArr[i].length; j++) {
let i1 = Math.floor(Math.random() * (multArr.length));
let j1 = Math.floor(Math.random() * (multArr.length));
let temp = multArr[i][j];
multArr[i][j] = multArr[i1][j1];
multArr[i1][j1] = temp;
}
}
}
for(设i=0;i