2015-05-25 78 views
0

這裏是我的代碼如何獲得對象uint8clampedarray在foreach中?

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); 

} 

此代碼不給我的,它給[對象uint8clampedarray]作爲警報消息array.Instead的元素。

+0

'alert'不是一個調試工具 – adeneo

+0

你是什麼意思,不是一個調試工具。如何獲取對象uint8clampedarray中的元素? – Tharu

+1

我的意思是'alert'不是檢查對象和數組等東西的正確工具,您可以使用該控制檯。 – adeneo

回答

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); 
} 

但agai ñ,這兩個後者尚未普遍可用。