如何在foreach中获取对象uint8clampedarray?

时间:2015-05-25 09:01:32

标签: javascript html5 canvas image-manipulation

这是我的代码

var canvas = document.getElementById("viewport"); // HTMLCanvasElement
var context = canvas.getContext('2d'); // CanvasRenderingContext2D
var image = new Image();
image.src = "images/a.png";
image.onload = function(){
    context.drawImage(image, 0, 0);
    newFunction();

};

function newFunction()
{
    var imageHeight = image.naturalHeight;
    var imageWidth = image.naturalWidth;

    var data=[];
    var imageData = context.getImageData(0,0,imageWidth,imageHeight);
    var data = imageData.data;

    alert(data);

 }

这段代码并没有给我数组的元素。相反,它将[object uint8clampedarray]作为警告信息。

1 个答案:

答案 0 :(得分:0)

你必须使用循环来迭代类型化数组,因为他们目前没有forEach方法:

var data = imageData.data;
var i, length = data.length;

for(i = 0; i < length; i++) {
    // data[i]
}

有人建议为ES6实现迭代器,在这种情况下你可以这样做:

var iteratorArray = data[Symbol.iterator]();
console.log(iteratorArray.next().value);

或更简单的循环:

for (let v of data) {
  console.log(v);
}

但同样,后两者尚未普及。