配列のループと中断なしの項目の削除
JavaScript では、splice() メソッドを使用して配列から項目を削除すると、多くの場合、未定義の値を検出することなく配列を反復処理するという課題。提供されたコードでは、for ループ内で splice() を使用すると、オークション アイテムの秒プロパティが未定義になり、エラーが発生します。
この問題を解決するには、次の代替案を検討してください。
1. splice() 後のループ インデックスのデクリメント
splice() を使用して項目を削除した後、ループ インデックス (i) をデクリメントして、配列の再インデックスを補うことができます。これにより、次の反復が正しいインデックスから継続されることが保証されます。
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() 後のインデックスの再作成は反復内の残りの項目に影響を与えません。
var i = Auction.auctions.length while (i--) { ... if (...) { Auction.auctions.splice(i, 1); } }
を採用することでこれらのアプローチの 1 つを使用すると、未定義値の問題が発生することなく配列を効率的に反復処理して項目を削除でき、ループ プロセスの整合性を確保できます。
以上がループ中に JavaScript で配列項目を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。