2017-08-04 64 views
-2

我是看在JavaScript中的視頻和碰到這樣的:這個javascript遊戲代碼是做什麼的?

var matrix = [ 
[0,0,0], 
[0,1,0], 
[1,1,1], 

]; 


matrix.forEach(function(row, y){ 
row.forEach(function(value, x){ 
    console.log(value); 
    if(value != 0){ 
     context.fillStyle = "red"; 
     context.fillRect(x, y, 1, 1); 
     } 

    }); 
}); 

我想知道的代碼在foreach部分是如何工作的。行變量是否與矩陣數組相等,x和y變量相等。我只是想讓我的頭靠近它。

在此先感謝, Asher。

+0

行變量變成等於矩陣數組中的每個數組。只需添加一個控制檯。記錄(),打開控制檯(按F12),所有問題都將被回答。 – baao

+0

代碼循環遍歷矩陣。第一個循環遍歷每一行,在第一個循環內創建第二個循環以遍歷該行中的每個項目。所有非零值賦予一種顏色並顯示在屏幕上(通過使用HTML畫布的上下文)。 –

+0

如果你不想失去在網絡上尋找解決方案的時間,至少應該尊重那些爲你解答問題的人,並將其中的一個標記爲正確的答案。 – DDRamone

回答

0

外部foreach遍歷這些行。

內部foreach從外部foreach迭代當前行的每個元素。然後它將當前元素的值輸出到控制檯,如果不等於零,它會在x處繪製一個像素紅色(實際上是一個矩形,但因爲它的邊長是單個像素,所以它會下到一個像素) y座標。

哦,如果你想知道x和y在那些foreach循環中。你可以考慮他們的迭代計數器。所以他們會在每次迭代開始時增加1。

所以在最後的代碼將繪製的3×3大小的小矩陣,並且油漆紅色像素的每個,這不是0

0

的矩陣是一個數組的數組值。

所以矩陣[1] = [0,1,0]爲例(這是一個數組)。

當你說forEach你說for矩陣[0],矩陣[1]和矩陣[2]

功能,row的第一比特,等於矩陣的內容[*]。第二部分x是矩陣的數字(0,1,2)。

這有道理嗎?

編輯:

我們知道,矩陣[1] = [0,1,0]

是matrix.forEach(函數(行,Y)必須在某一點說,因此,我們知道

行= [0,1,0],Y = 1

row.forEach(函數(值X)爲此的是,再次相同,但這次

爲行[0],行[1]和行[2]

value將行的內容[*]並x將是數

+0

是的,這是有道理的,但每個循環的第二個是什麼呢? (我問你,因爲你的回答對我有意義) – Asher

+0

我已經將第二部分添加到了我的答案中@Asher隨時提問,以便我可以更好地回答我的答案:-) –

0

forEach功能的第二個參數是電流的指數元素正在處理陣列中。'

在你的情況下,y將是該行的索引,並且x將是column的索引。