forEachとspliceを同時に使ったときの動作
javascriptで、forEach(配列の全要素に対して処理を実行する)とsplice(配列のある要素を削除する)を同時に使ったらどうなるか試してみた。
お試しコードは以下。
var tes = ["1", "2", "3", "4", "5"]; tes.forEach(function(value, index){ if (value == "3"){ tes.splice(index,1); //"3"の要素を削除 } console.log(value); });
コンソールの出力結果は、
1
2
3
5
となった(4の処理が実行されない)
まぁこうなるわな。。
基本的にforEachの中で配列操作するのって、混乱を招くのでしちゃいけないと思う。