Apabila melelaran melalui tatasusunan dengan kaedah forEach, adalah perkara biasa untuk menghadapi situasi di mana anda ingin mengubah suai elemen tatasusunan. Walau bagaimanapun, percubaan untuk menetapkan nilai baharu secara langsung dalam panggilan balik tidak selalu menjejaskan tatasusunan asal.
Pertimbangkan kod berikut:
var arr = ["one", "two", "three"]; arr.forEach(function(part) { part = "four"; return "four"; }) alert(arr); // Output: "one,two,three"
Walaupun tugasan dalam panggilan balik, arr tatasusunan asal mengembalikan nilai asalnya. Ini berlaku kerana forEach mencipta salinan cetek elemen tatasusunan untuk fungsi panggil balik.
Untuk mengubah suai elemen tatasusunan daripada lelaran forEach, kita perlu menghantar tatasusunan asal sebagai parameter tambahan. Ini membolehkan kami mengakses secara terus dan mengubah suai tatasusunan itu sendiri dalam panggilan balik:
arr.forEach(function(part, index, theArray) { theArray[index] = "hello world"; });
Dengan menggunakan theArray[index], kami boleh menulis ganti elemen tatasusunan asal.
Sebagai alternatif, kita boleh menggunakan argumen kedua forEach untuk menetapkan nilai ini dalam panggilan balik. Dengan menetapkan ini kepada tatasusunan asal, kita boleh menggunakan[indeks] ini untuk mengubah suai elemen secara terus:
arr.forEach(function(part, index) { this[index] = "hello world"; }, arr); // Use arr as this
Kedua-dua pendekatan membenarkan untuk mengubah suai elemen tatasusunan semasa lelaran. Pilihan antara keduanya bergantung pada keutamaan.
Perlu dinyatakan bahawa forEach ialah salah satu daripada beberapa utiliti tatasusunan yang disediakan oleh prototaip Tatasusunan. Utiliti lain yang biasa digunakan termasuk:
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah suai nilai tatasusunan dalam gelung forEach?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!