2

いくつかのアイテムが削除される配列があります。しかし、いくつかのループがまだそれらで実行されているため、オブジェクトを削除する場所を単純にスキップしたい

構文 for(i in array) はインデックスを反復処理するため、これを行う必要があることは知っていますが、アイテムを削除するにはどうすればよいですか? array[4] = null を実行すると、for は気にせず、4 の値を使用しようとし続けるためです。

!null かどうかも確認しようとしましたが、成功しませんでした...ありがとう

4

1 に答える 1

4

穴を残さずにアイテムを削除したい場合は、使用する必要があります.splice()

myarray.splice(idx, 1);

しかし、そこに穴が欲しいがそれらをスキップしたいという場合は、 を使用deleteして項目を削除し(穴を残す)、 を使用.forEach()して穴をスキップする反復に使用できます。

delete myarray[idx];

// ...

myarray.forEach(function(item, i) {
    // holes will be skipped
});

IE8 以前などの古いブラウザをサポートするには、forEach().

  • MDN .forEach() (短いパッチは無視してください。非準拠の貧弱なバージョンです。)
于 2012-12-12T20:10:58.347 に答える