For循环是杀死浏览器

Mat*_*key -1 javascript arrays for-loop canvas

我试图循环遍历canvas方法返回的数组:getImageData()返回绘制到HTML画布的图像的像素颜色值.但我杀了我的浏览器,返回的数组对于平均大小的图像当然很大,我使用错误的方法还是循环通过如此大的数组只是不可能?

for (var i = 0; i < ImageData.length; i + 3) {
    if (ImageData[i] > 210 && ImageData[i + 1] < 200 && ImageData[i + 2] > 60) {
        var Suspect = {
            Red: ImageData[i],
            Green: ImageData[i + 2],
            Blue: ImageData[i + 3]
        }
        Suspects.push(Suspect);
    }
}
Run Code Online (Sandbox Code Playgroud)

Ber*_*rgi 5

你永远不会i在声明中递增i+3.您需要将结果分配回i:i = i+3i += 3.

另请注意,ImageData.data通常步宽为4,而不是3; 数组中的每四个值是像素的alpha通道(不透明度).