Dalam JavaScript, kaedah forEach() biasanya digunakan untuk mengulangi tatasusunan dan melakukan tindakan tertentu pada setiap elemen. Walau bagaimanapun, percubaan untuk mengubah suai elemen ini dalam gelung lelaran sering menyebabkan nilai asal dikekalkan.
Pertimbangkan contoh berikut:
var arr = ["one", "two", "three"]; arr.forEach(function (part) { part = "four"; return "four"; }); alert(arr); // Output: ["one", "two", "three"]
Walaupun menetapkan "empat" untuk bahagian dalam gelung , tatasusunan arr kekal tidak berubah. Ini kerana panggilan balik forEach() hanya menerima salinan setiap elemen, bukan rujukan kepada elemen asal.
Untuk mencapai pengubahsuaian yang bermakna, kita boleh menggunakan parameter indeks yang disediakan oleh panggilan balik forEach(). Parameter ini mewakili indeks unsur semasa dalam tatasusunan:
arr.forEach(function (part, index, theArray) { theArray[index] = "hello world"; });
Dalam kes ini, Tatasusunan merujuk kepada tatasusunan asal dan kami boleh mengakses dan mengubah suai elemennya secara langsung menggunakan nilai indeks.
Sebagai alternatif, kita boleh menggunakan parameter ini bagi panggilan balik forEach() sebagai rujukan kepada tatasusunan:
arr.forEach(function (part, index) { this[index] = "hello world"; }, arr); // Use arr as this
Dengan menetapkan arr sebagai nilai ini, kami memastikan bahawa [indeks] ini menunjuk kepada elemen yang betul dalam tatasusunan.
Walaupun forEach() membenarkan lelaran dan pengubahsuaian, terdapat kaedah prototaip Array lain yang mungkin lebih sesuai untuk kegunaan tertentu kes:
Dengan memilih kaedah yang sesuai berdasarkan anda tugas, anda boleh mencapai manipulasi tatasusunan yang cekap dan tepat.
Atas ialah kandungan terperinci Mengapakah mengubah suai elemen tatasusunan dalam gelung forEach dalam JavaScript tidak mengubah tatasusunan asal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!