2012-03-20 78 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函数调用,您可能会修复它。