2012-03-20 79 views
0

我有一個數組IM製作真的很困惑,它變得有點混亂跟隨,但我相信它,我接近了什麼我嘗試做的唯一途徑。的多維數組

我在這裏的想法是存儲getImageData在一個數組,所以我可以每個圖像鏈接到數據的數組。

這是我如何創建我的數組:

var listObj = { 
    id: uid, 
    extra: [ 
      ctx2.getImageData(abposx,abposy,imgwidth,imgheight) 
     ] 

    }; 
pixeld.push(listObj); 

所以,現在即時通訊試圖通過陣列「pixeld」運行到找到UID,但我不知道語法應該如何....這是我的嘗試:

for (j = (pixeld.length-1); j > -1; --j){ 
     if(pixeld[j].extra.data[3] !==0){ //line 220 
      matches.push(pixeld[j].id); 
     } 

    } 

問題是,我得到這個錯誤:

Uncaught TypeError: Cannot read property '3' of undefined on line 220 

我已經標記這行是22 0在for循環中。

任何一個知道我的錯誤是什麼?

+0

你認爲'pixel [j] .data [3]'產生了什麼? – 2012-03-20 23:28:05

+0

本示例顯示的整數值爲:http://www.paste.to/MzYxNDc1。這是與在該實施例的特定像素,礦是數據的陣列或應該=/ – Sir 2012-03-20 23:31:52

回答

1

所以你的結構如下所示:

var pixeld = []; // an Array 
var listObj = {}; //an Object 

listObj = { // literal notation 
    id : uid, 
    extra : [ ctx2.getImageData(abposx,abposy,imgwidth,imgheight) ] 
} 

現在的問題是:什麼是ctx.2.getImageData()回來?你需要澄清一點。

直到pixeld[j].extra一切都很好,但沒有data-屬性。如果真的getImageData()返回數組,你應該能夠訪問這樣的:

pixeld[j].extra[3] 
+0

從我一派getImageData返回的關於哪個i。從這個HTTP制定了帆布的給定區域信息的數組:/ /www.paste.to/MzYxNDc1 – Sir 2012-03-20 23:27:25

+0

不幸的是,你不能根據你在那裏的代碼來判斷。嘗試以下方法:嘗試'pixeld [j] .extra [3]',如果這不起作用,請執行'console.log(pixeld)'並檢查該對象。這應該給你一個關於結構的暗示。 (我假設你有一個像在FF螢火蟲webdevelopertools?) – Christoph 2012-03-20 23:32:19

+0

另一個問題是:你想通過'pixeld達到什麼樣的研究[J] .extra.data [3] == 0'如果你需要的是id!也許你可以忽略if條件。 – Christoph 2012-03-20 23:36:51

1

的問題是,你試圖引用.extra爲對象,但是你把它聲明爲一個值的數組裏面(什麼ctx2.getImageData返回)。

簡單地刪除虛假的[]圍繞ctx2.getImageData函數調用,您可能會修復它。