2017-01-27 10 views
-1

コード「http://codepen.io/jalabkhan/pen/bgNavG」でこれを確認しました。私はforeachループの仕組みについて混乱しています。また、spark、iとarrayの値は何ですか?私はプログラミングに慣れていないので、可能な限り単純な答えを出そうとしてください。みんな、ありがとう!!はforeachループで機能しますか?

function draw() { 
    ctx.fillStyle = 'rgba(0,0,0, 0.1)'; 
    ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); 

    sparks.forEach(function (spark, i, array) { 

     if (spark.opacity <= 0) { 
     array.splice(i, 1); 
     } else { 
     drawSpark(spark); 
     } 
    }); 

    window.requestAnimationFrame(draw); 
    } 
+0

スパークホイップループカウンタの現在の要素iがインデックスと配列で、あるされ、アレイ全体がここに –

+0

火花ている尋ねる前に、基礎研究を行ってください。これはチュートリアルサイトではありません – charlietfl

+0

したがって、foreachループでsparks objが呼び出されると、最初の値 'spark'はobjの複数の新しい要素からの現在の要素です。 'i'は "spark [ 0] "であり、配列はSparks obj全体です。私は何かが恋しいか、まだ間違っていますか? – user2777173

答えて

2

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

アレイのforEachメソッドは、コールバック関数を介してその値をループすることを可能にします。つまり、配列の各値は処理のためにコールバック関数に順番に渡されます。

forEachが自動的にコールバックに3つの引数を転送:

  • 現在処理中の配列項目の値
  • 現在
  • 処理される配列項目の数値指標は、アレイ全体を反復処理さ
+1

ありがとう! – user2777173

+0

ようこそ。あなたがあなたの質問に対する答えと考えるなら、正しい答えに印をつけてください。 – Utkanos

1

for eachループはforループのように配列を投げましたが、すでにvあなたの例では、あなたのコールバック関数

でALUE:

function draw() { 
    ctx.fillStyle = 'rgba(0,0,0, 0.1)'; 
    ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); 

    sparks.forEach(function (spark, i, array) { 

/*spark is your current value in the array (like sparks[i] in a for loop), i is 
you current index and array is sparks*/ 

     if (spark.opacity <= 0) { 
     array.splice(i, 1); 
     } else { 
     drawSpark(spark); 
     } 
    }); 

    window.requestAnimationFrame(draw); 
    } 
+0

ありがとうございました.. !! – user2777173

+0

あなたは大歓迎です! –

関連する問題