簡體   English   中英

如何使用slice()復制數字數組

[英]How to copy an array array of numbers using slice()

我試圖用隨機的游戲棋子(圖像)填充游戲板(8 x 8),但不是整個棋盤都被填充。 有些將是空的。 為此,我在板上隨機生成x,y坐標,並為其分配一個隨機數。 由於fillBoard是模塊中的私有函數,因此我將其復制到copyBoard,后者是公共函數。

這個想法是隨機生成一個x,y坐標,並將其放在array [x],array [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;
}  

看來您的問題僅是由初始化隨機數組元素引起的。
您可以遍歷所有行和列並僅復制初始化元素
要么
可以存儲initilised元件別處的列表/陣列(陣列元件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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM