ループを中断せずに配列をループし、項目を削除する
JavaScript では、配列を反復処理して要素を削除するのは難しい場合があります。 splice() の動作方法。 splice() を使用して配列から項目が削除されると、配列のインデックスが再作成され、インデックスがスキップされたり、キャッシュされた長さが古くなったりする可能性があります。
この問題に対処するには、2 つの優れた解決策があります。 :
スプライシング後のインデックスのデクリメント
1 つのアプローチは、 splice() の実行後にインデックス i をループします。 i をデクリメントすることで、次の反復では前に削除した項目をスキップし、ループ内のギャップを防ぎます。
逆方向の反復
あるいは、反復することもできます。配列を逆の順序で通過します。最後のインデックスから開始して反復ごとに i をデクリメントすると、高いインデックスで削除された項目が低いインデックスに影響を与えないため、インデックスの再作成の問題が回避されます。この方法により、より効率的でクリーンなループが可能になります。
例:
次に、逆反復手法を使用したコードの改訂版を示します:
var i = Auction.auctions.length; while (i--) { ... if (...) { Auction.auctions.splice(i, 1); } }
このアプローチは、逆の順序で反復し、残りの項目に影響を与えることなく削除された項目を処理することにより、ループの整合性を維持します。要素。
以上がループ中に JavaScript 配列から項目を安全に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。