2016-08-19 80 views
0

我想用用戶輸入填充多維數組。我有這樣的功能:用用戶輸入填充多維數組

var buildIt = function(row, col){ 
var a = [] 
var input 
    for(var i = 0; i < row; i++){ 
    a[i] = [] 
    input = prompt('Input: ') 
    for(var j = 0; j < col; j++){ 
     a[i][j] = input.split('') 
    } 
    } 
return a 
} 

window.buildIt(3,3)

我想讓它使用戶被提示的時候有行數。如果用戶創建三行矩陣,則應提示用戶輸入三次。我想在每一行中存儲這個輸入。例如,用戶輸入foobarbaz陣列a應該是這樣的:

a = [ 
    ['f','o','o'], 
    ['b','a','r], 
    ['b','a','z] 
] 

當我調用該函數:

var board = buildIt(3,3) 
console.log(board[0][0]) 

它記錄第一行的元素,而不是在所有的元件在點[0][0]如果用戶輸入foo,應該是f

+1

3x3是9.您的循環次數超出了您的預期 – mplungjan

回答

1

您使用的是兩個迴路內的提示,所以如果你有3×3的Metrix的,然後它會提示你9次,所以我刪除多餘的循環來插入數據。 試試這個

var buildIt = function(row, col){ 
 
    var a = [] 
 
    var input 
 
    for(var i = 0; i < row; i++){ 
 
    \t input = prompt('Input: ') 
 
    \t a[i] = input.split('') 
 
    } 
 
    return a 
 
    } 
 
    
 
    console.log(window.buildIt(3,3));

1

您發佈的代碼工作,輸出如下(我用輸入的隨機字符串代替)。然而,你的數組實際上應該看起來像這樣,因爲你的例子中你的級別太淺了(請記住a[i][j]分配了.split('')的結果,在這種情況下返回一個字符數組,因此將存在a[i][j][0]這將是一個字符。

> buildIt(3,3) 
[ [ [ 'G', 'C', 'T', 'J', 'O' ], 
    [ 'S', 'Q', 'S', 'B', 'G' ], 
    [ 'D', 'E', 'U', 'P', 'Y' ] ], 
    [ [ 'D', 'B', 'I', 'Z', 'Q' ], 
    [ 'G', 'M', 'U', 'N', 'R' ], 
    [ 'D', 'T', 'I', 'A', 'V' ] ], 
    [ [ 'J', 'L', 'O', 'H', 'V' ], 
    [ 'U', 'C', 'D', 'B', 'H' ], 
    [ 'U', 'C', 'X', 'E', 'W' ] ] ] 
1

您不需要傳遞列的no,只是行,並刪除內部循環,因爲您只需要執行行數的代碼。更新的代碼

var buildIt = function(row){ 
    var a = [] 
    var input 
    for(var i = 0; i < row; i++){ 
     input = prompt('Input: '); 
     a[i] = input.split(''); 
    } 
    return a; 
    } 
    buildIt(3);