Apabila mengalih keluar item daripada tatasusunan dalam gelung, anda mungkin menghadapi isu di mana splice() menghasilkan elemen berikutnya tidak boleh diakses. Ini kerana splice() mengindeks semula tatasusunan, berpotensi melangkau item.
Masalah:
Dalam contoh berikut, mengurangkan "saat" dan kemudian menyambung item berdasarkan nilai negatifnya menyebabkan undefined ralat:
for (i = 0, len = Auction.auctions.length; i < len; i++) { auction = Auction.auctions[i]; Auction.auctions[i]['seconds'] --; if (auction.seconds < 0) { Auction.auctions.splice(i, 1); } }
Penyelesaian:
Untuk menyelesaikan isu ini, pertimbangkan dua pendekatan:
Penurunan Indeks Selepas Splice(): Selepas mengalih keluar item dengan splice(), kurangkan "i" untuk melaraskan pengindeksan semula:
for (i = 0, len = Auction.auctions.length; i < len; i++) { auction = Auction.auctions[i]; Auction.auctions[i]['seconds'] --; if (auction.seconds < 0) { Auction.auctions.splice(i, 1); i--; } }
Lelaran Secara Songsang: Mulakan gelung dengan indeks terakhir dan lelaran secara terbalik:
var i = Auction.auctions.length while (i--) { ... if (...) { Auction.auctions.splice(i, 1); } }
Dengan cara ini, pengindeksan semula hanya mempengaruhi elemen berikutnya, membolehkan gelung.
Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Item dengan Selamat daripada Array Semasa Memulas dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!