forEach メソッドを使用して配列を反復処理する場合、配列の要素を変更したい状況がよく発生します。ただし、コールバック内で新しい値を直接割り当てようとしても、必ずしも元の配列に影響するとは限りません。
次のコードを考えてみましょう。
var arr = ["one", "two", "three"]; arr.forEach(function(part) { part = "four"; return "four"; }) alert(arr); // Output: "one,two,three"
コールバック内で代入すると、元の配列 arr は元の値を返します。これは、forEach がコールバック関数用に配列要素の浅いコピーを作成するために発生します。
forEach 反復から配列の要素を変更するには、元の配列を次のように渡す必要があります。追加のパラメータ。これにより、コールバック内で配列自体に直接アクセスして変更できるようになります。
arr.forEach(function(part, index, theArray) { theArray[index] = "hello world"; });
theArray[index] を使用すると、元の配列要素を上書きできます。
あるいは、forEach の 2 番目の引数を使用して、コールバック内で this 値を設定することもできます。これを元の配列に設定することで、this[index] を使用して要素を直接変更できます。
arr.forEach(function(part, index) { this[index] = "hello world"; }, arr); // Use arr as this
どちらのアプローチでも、反復中に配列要素を変更できます。 2 つの間の選択は好みによって異なります。
forEach は、Array プロトタイプによって提供されるいくつかの配列ユーティリティの 1 つであることに言及する価値があります。その他の一般的に使用されるユーティリティには次のものがあります。
以上がforEach ループ内で配列値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。