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

我在javascript中洗牌数组时遇到问题。 多维数组将其行洗牌两次,结果与返回的数字完全相同。 我不想要相同的数字,但我想要不同的洗牌结果

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