Closed1
jsで配列ループ時に要素を削除した時

array.splice()をループ内で利用し、要素が削除されたときの挙動について
.forEach
- spliceは破壊的メソッドの為、keyがずれることになり、致命的ダメージを追う時がある
- arr.forEach((item, key, a) => { a.splice(0, 1) }) こういうコードは、0番目が消えるので、ループが回りきらない
.map
- keyが変わることが無いので、途中削除されてもループには影響なし。
- arr.map((item, key, a) => { a.splice(0, 1) }) こういうコードでも、ループ自体は最初の件数分回る。
※もちろん、元配列にspliceを書けているので、ループ後に元配列を確認すると、forEach同様データが削除されている。
このスクラップは2022/09/15にクローズされました