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 は元の配列を参照し、インデックス値を使用してその要素に直接アクセスして変更できます。
あるいは、forEach() コールバックの this パラメータを、 array:
arr.forEach(function (part, index) { this[index] = "hello world"; }, arr); // Use arr as this
arr を this の値として設定することで、this[index] が配列内の正しい要素を指すようにします。
forEach() では反復と変更が可能ですが、特定の用途に適した他の Array プロトタイプ メソッドもありますcase:
タスクに基づいて適切な方法を選択することで、効率的かつ正確な配列操作を実現できます。
以上がJavaScript の forEach ループ内で配列要素を変更しても元の配列が変更されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。