ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript の forEach ループ内で配列要素を変更しても元の配列が変更されないのはなぜですか?

JavaScript の forEach ループ内で配列要素を変更しても元の配列が変更されないのはなぜですか?

DDD
リリース: 2024-11-30 22:25:14
オリジナル
981 人が閲覧しました

Why does modifying array elements within a forEach loop in JavaScript not change the original array?

反復中の配列値の変更

JavaScript では、配列を反復処理し、各要素に対して特定のアクションを実行するために forEach() メソッドがよく使用されます。ただし、反復ループ内でこれらの要素を変更しようとすると、多くの場合、元の値が保持されます。

次の例を考えてみましょう:

var arr = ["one", "two", "three"];

arr.forEach(function (part) {
  part = "four";
  return "four";
});

alert(arr); // Output: ["one", "two", "three"]
ログイン後にコピー

ループ内の一部に "four" を割り当てているにもかかわらず、 、arr 配列は変更されません。これは、forEach() コールバックが元の要素への参照ではなく、各要素のコピーのみを受け取るためです。

配列インデックスを使用した要素の変更

意味のある変更を実現するには、 forEach() コールバックによって提供されるインデックス パラメータ。このパラメータは、配列内の現在の要素のインデックスを表します。

arr.forEach(function (part, index, theArray) {
  theArray[index] = "hello world";
});
ログイン後にコピー

この場合、theArray は元の配列を参照し、インデックス値を使用してその要素に直接アクセスして変更できます。

this パラメータの使用

あるいは、forEach() コールバックの this パラメータを、 array:

arr.forEach(function (part, index) {
  this[index] = "hello world";
}, arr); // Use arr as this
ログイン後にコピー

arr を this の値として設定することで、this[index] が配列内の正しい要素を指すようにします。

適切なツールの選択

forEach() では反復と変更が可能ですが、特定の用途に適した他の Array プロトタイプ メソッドもありますcase:

  • forEach: 各要素を反復処理してアクションを実行しますが、配列は変更しません。
  • filter: を作成します特定の条件を満たす要素のみを含む新しい配列条件。
  • map: 指定された関数に従って各要素を変換して、新しい配列を作成します。
  • some: 少なくとも 1 つの要素があるかどうかを確認します。配列内のすべてが条件を満たしているかどうかを確認します。
  • every: すべてかどうかを確認します。配列内の要素は条件を満たしています。

タスクに基づいて適切な方法を選択することで、効率的かつ正確な配列操作を実現できます。

以上がJavaScript の forEach ループ内で配列要素を変更しても元の配列が変更されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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