Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengalih keluar Item Array dengan Selamat Semasa Lelaran dalam JavaScript?

Bagaimana untuk Mengalih keluar Item Array dengan Selamat Semasa Lelaran dalam JavaScript?

Barbara Streisand
Barbara Streisandasal
2024-12-28 18:54:11254semak imbas

How to Safely Remove Array Items During Iteration in JavaScript?

Mengalih keluar Item Tatasusunan dalam Gelung: Mengekalkan Lelaran

Masalah:

Mengulang melalui tatasusunan dan mengalih keluar item boleh menyebabkan tingkah laku yang tidak dijangka apabila menggunakan kaedah splice(). Apabila item dipadamkan, tatasusunan diindeks semula, berpotensi melangkau elemen berikutnya. Ini membawa kepada ralat pembolehubah tidak ditentukan yang disebut.

Penyelesaian:

Terdapat dua pendekatan utama untuk menangani isu ini:

  1. Mengurangkan Indeks Gelung: Selepas mengalih keluar item menggunakan splice(), kurangkan indeks gelung (i--) untuk mengambil kira pengindeksan semula. Ini memastikan gelung akan diteruskan dengan elemen yang betul.
  2. Lelaran Terbalik: Daripada lelaran dalam tertib menaik (i ), lelaran secara terbalik (i--) untuk mengelakkan kesan re -pengindeksan. Dalam pendekatan ini, item seterusnya yang akan diperiksa terletak pada indeks yang lebih rendah daripada yang semasa, jadi pengindeksan semula tidak menjejaskannya.

Contoh:

var i = Auction.auctions.length;
while (i--) {
    ...
    if (...) {
        Auction.auctions.splice(i, 1);
    }
}

Dengan mengulang secara terbalik, pengalihan keluar item tidak menjejaskan item seterusnya dalam lelaran. Oleh itu, gelung diteruskan tanpa gangguan, memadamkan item seperti yang dikehendaki.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Item Array dengan Selamat Semasa Lelaran dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn