具有获取图像数据的多维数组

时间:2012-03-20 23:16:40

标签: javascript

我真的很困惑一个数组即时制作,它有点令人困惑,但我相信这是我接近我想要做的唯一方法。

我的想法是将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

我在for循环中标记了哪一行是220。

任何人都知道我的错误是什么?

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:1)

问题在于您尝试将.extra作为对象引用,但是您将其声明为内部具有单个值的数组(ctx2.getImageData返回的内容)。

只需删除[]函数调用周围的虚假ctx2.getImageData,您就可以修复它。