2015-04-06 272 views
0

我試圖將我的工作處理草圖移植到p5.js中,以便我可以在線使用它。但是當試圖設置2維數組中的值時,我遇到了一個問題。我認爲我遵循API的2d數組部分中顯示的正確語法,但得到一個未捕獲類型錯誤,指出「無法設置未定義的屬性0」。創建P5.js二維數組

草圖很簡單,我只是想從CSV讀取和數據存儲在一個二維數組:

var cols = 8; 
var rows = 8; 
var month = 1; 
var values = []; 
var table; 

function preload(){ 
    table = loadTable("1988.csv", "csv"); 
} 

function setup() { 
    createCanvas(800, 800); 
    var totalRows = table.getRowCount(); 

    for (var m = 0; m < 12; m++) { 
     for (var c = 0; c < cols; c++) { 
      values[c]=[]; 
      for (var r = 0; r < rows; r++) { 
       values[r+m*rows][c] = table.getNum(m*rows*cols + c*rows + r, 0); 
      } 
     } 
    } 
} 

任何幫助是非常感謝!

謝謝你的時間。

+0

值被初始化爲在頂部或許一維。你可以嘗試'''var values = new Array(12);'''? – 2015-04-06 02:32:40

+0

感謝您的迴應,喬治。在常規處理中,2d數組在初始化時必須這樣定義,但它看起來P5.js上的文檔沒有這樣做:http://p5js.org/learn/examples/Arrays_Array_2D.php – mcarlile 2015-04-06 02:44:05

+0

注意到這一點line in the documentation snippet:'''距離[x] = []; //創建嵌套數組'' – 2015-04-06 04:45:11

回答

0

嘗試數組訪問值設定爲undefined對象之前分配所述陣列:

var cols = 8; 
var rows = 8; 
var month = 1; 
var months = 12; 
var values = new Array(months); 
var table; 

function preload(){ 
    table = loadTable("1988.csv", "csv"); 
    for(var i = 0 ; i < months; i++) values[i] = [];//initialize 2nd dimension of the array as well, not just the 1st 
} 

function setup() { 
    createCanvas(800, 800); 
    var totalRows = table.getRowCount(); 

    for (var m = 0; m < 12; m++) { 
     for (var c = 0; c < cols; c++) { 
      values[c]=[]; 
      for (var r = 0; r < rows; r++) { 
       values[r+m*rows][c] = table.getNum(m*rows*cols + c*rows + r, 0); 
      } 
     } 
    } 
}