Javascript 如何使用slice()复制数字数组

Javascript 如何使用slice()复制数字数组,javascript,arrays,splice,Javascript,Arrays,Splice,我试图用随机游戏块(图像)填充一个游戏板(8乘8),但不是整个板都被填充。有些是空的。为此,我在电路板上随机生成x,y坐标,并给它分配一个随机数。因为fillBoard是模块中的私有函数,所以我将它复制到copyBoard,这是公共函数 其思想是随机生成一个x,y坐标,并将其放入一个数组[x],数组[y]。但是,我在复制数组时遇到了问题,因为并不是所有数组都已定义。我想知道你是怎么做到的 这是我到目前为止得到的。显示错误是因为splice()无法用于未定义的变量 function fillBoa

我试图用随机游戏块(图像)填充一个游戏板(8乘8),但不是整个板都被填充。有些是空的。为此,我在电路板上随机生成x,y坐标,并给它分配一个随机数。因为fillBoard是模块中的私有函数,所以我将它复制到copyBoard,这是公共函数

其思想是随机生成一个x,y坐标,并将其放入一个数组[x],数组[y]。但是,我在复制数组时遇到了问题,因为并不是所有数组都已定义。我想知道你是怎么做到的

这是我到目前为止得到的。显示错误是因为splice()无法用于未定义的变量

function fillBoard(){
    var x, y;
    monsters=[]; //empty array

    x = Math.floor(Math.random()*cols);
    y = Math.floor(Math.random()*rows);

    monsters[x] = []; /* making x variable an array */
    monsters[x][y] = Math.floor(Math.random() * numMonsterTypes);
}

function copyBoard() {
    var copy = [],
        x;

    for (x = 0; x < cols; x++) {
        if(monsters[x]){
            copy[x] = monsters[x].slice(0); //slice(array) -> returns the selected elements in an array
        };
    };
    return copy;
}  
函数填充板(){
变量x,y;
怪物=[];//空数组
x=Math.floor(Math.random()*cols);
y=Math.floor(Math.random()*行);
怪物[x]=[];/*使x变量成为数组*/
怪物[x][y]=数学地板(Math.random()*numMonsterTypes);
}
功能复印机(){
var copy=[],
x;
对于(x=0;x返回数组中选定的元素
};
};
返回副本;
}  

您的问题似乎是由初始化的随机数组元素引起的。
您可以迭代所有行和列,也可以仅复制初始化元素

您可以将初始化元素的列表/数组存储在其他位置(数组元素maxRow+1/maxCol+1?)

以下是解决方案:

function fillBoard(){
    var x, y;
    monsters=[]; //empty array

    x = Math.floor(Math.random()*cols);
    y = Math.floor(Math.random()*rows);

    monsters[x] = []; /* making x variable an array */
    monsters[x][y] = Math.floor(Math.random() * numMonsterTypes);
}

function copyBoard() {
    var copy = [],
        x;

    for (x = 0; x<cols; x++){
        copy[x] = [];
        if(monsters[x]){
            copy[x] = monsters[x].slice(0);;
        };
    };

    return copy;
}
函数填充板(){
变量x,y;
怪物=[];//空数组
x=Math.floor(Math.random()*cols);
y=Math.floor(Math.random()*行);
怪物[x]=[];/*使x变量成为数组*/
怪物[x][y]=数学地板(Math.random()*numMonsterTypes);
}
功能复印机(){
var copy=[],
x;

for(x=0;xIt实际上取决于您存储的怪物的类型。如果您描述您试图解决的实际问题,我们可能能够更好地帮助您找到合适的解决方案。现在,您显示的代码没有太多意义,所以我想我们需要知道您真正想做什么。