ホームページ > ウェブフロントエンド > jsチュートリアル > forEach ループ内で配列値を変更するにはどうすればよいですか?

forEach ループ内で配列値を変更するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-11 06:50:02
オリジナル
1011 人が閲覧しました

How do I modify array values within a forEach loop?

forEach を使用した配列値の変更

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 つであることに言及する価値があります。その他の一般的に使用されるユーティリティには次のものがあります。

  • filter: 特定の条件を満たす要素を含む新しい配列を作成します。
  • map: 既存の配列の各要素を変換して新しい配列を作成します。
  • some: 配列内の少なくとも 1 つの要素が特定の条件を満たすかどうかをチェックします。
  • every: チェックします。配列内のすべての要素が特定の条件を満たす場合。
  • find: 特定の条件を満たす配列内の最初の要素を返します。

以上がforEach ループ内で配列値を変更するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート