«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как безопасно удалить элементы массива в JavaScript во время цикла?

Как безопасно удалить элементы массива в JavaScript во время цикла?

Опубликовано в 2025-03-04
Просматривать:751

How to Safely Remove Array Items in JavaScript While Looping?

зацикливание через массивы и удаление элементов без перерывов

в JavaScript, используя метод сплайсинга () для удаления элементов из массива, часто представляя проблему с помощью итерации через массив, не встречая не определенные значения. В предоставленном коде использование Splice () в цикле FOR заставляет свойство секунды элемента аукциона стать неопределенным, что приводит к ошибкам.

для решения этой проблемы рассмотрите следующие альтернативы:

1. Уменьшите индекс цикла после splice ()

после удаления элемента, используя splice (), вы можете уменьшить индекс цикла (i), чтобы компенсировать повторное индексирование массива. Это гарантирует, что следующая итерация будет продолжаться из правильного индекса. auction = auction.auctions [i]; Auction.auctions [i] ['seconds'] -; if (auction.seconds & lt; 0) { Auction.auctions.splice (i, 1); я--; // уменьшение индекса цикла } }

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--; // Decrement the loop index
    }           
}
2. Итерация в обратном

, итерация через массив в обратном порядке, повторная индексирование после splice () не повлияет на оставшиеся элементы в итерации. while (i-) { ... если (...) { Auction.auctions.splice (i, 1); } }

, приняв один из этих подходов, вы можете эффективно итерации через массивы и удалять элементы, не столкнувшись с проблемой неопределенной стоимости и обеспечивая целостность процесса цикла.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3