2014-05-15 26 views
0

我正在學習javascript,我想在一個函數中填充數組,並將其作爲第二個函數中的參數傳遞。我有下面的代碼,但由於某種原因,它不工作。無法在函數中傳遞數組javascript

function gameplay(tmp) { 
    for (var i = 0; i < tmp.length; i++) { 
     if (xTrans >= tmp[0] - 1 
      && xTrans < tmp[0] 
      && zTrans <= tmp[1] - 1 
      && zTrans > tmp[1]) 
     { 
      //some code here 
     } 
    } 
} 

function fillMap() { 
    var bounds = new Array(); 
    for (var y = 0; y < map.length; y++) { 
     for (var x = 0; x < map[0].length; x++) { 
      if (map[y][x] == '1') { 
       bounds[length] = 4 * x; 
       length++; 
       bounds[length] = -y - 4 * y; 
       length++; 
      } 
     } 
    } 
    return bounds; 
} 

和我這樣調用:

var tmp = fillMap(); 
gameplay(tmp); 

在此先感謝..

+0

你是否得到某種錯誤信息,或者輸出/結果是不是你所期望的? –

+0

確保您的代碼完全運行。 'length'變量沒有被定義。我假設你想'bounds.push(...)'來代替。如果您對JS中的數組不熟悉,那麼我建議您使用一個教程:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Predefined_Core_Objects#Array_Methods。 –

+0

長度被定義,當我試圖打印數組時,我得到的消息是空的。 – user3478067

回答

1

你可能想嘗試這只是爲了確認,當你有一個清晰和明顯的輸入會發生什麼:

function fillMap() { 
var map = [[0]]; 

這應該給你輸出:[4,-5]

一些潛在的問題

  • 地圖不被任何定義
  • 長度不被任何定義
  • xTrans不被任何定義
  • zTrans不被任何定義
  • 這似乎不大可能,基於我所看到的,如果條件可以得到滿足:

    xTrans >= tmp[0]-1 && xTrans < tmp[0] // translates to if xTrans == tmp[0] - 1

一些其他的想法

  • 你最好不要使用bounds.push,而不是bounds[length] = $val
  • for(var y=0; y<map.length ;y++) { for(var x=0; x<map[0].length ;x++) {會更安全/更快var yLen = map.length; var xLen = map[0].length; for(var y=0; y<yLen ;y++) { for(var x=0; x<xLen ;x++) {
  • bounds[length] = -y - 4 * y相同bounds[length] = -5 * y;
+0

我試着推和for語句,如你所說,其他變量已定義,但仍然是相同的問題 – user3478067

0

從你評論它似乎該數組沒有被填充,因爲你有一些條件來填充數組。 所以首先檢查你的狀況是否滿員。

+0

是的問題是if語句謝謝你們 – user3478067