const array = [1, 2, 3, 4, 5];
for (let i = 0; i < array.length; i++) {
array.splice(i, 1);
console.log(array[i]);
}
上記のコードでは、forループ内でsplice()関数を使用して配列の要素を削除しています。しかし、削除後に配列の要素にアクセスすると、予期しない値が表示されます。
- 逆順でループを実行する: forループを後ろから前に向かって実行することで、要素の削除が正しく行われます。以下に修正例を示します。
for (let i = array.length - 1; i >= 0; i--) {
array.splice(i, 1);
console.log(array[i]);
}
- 別の方法を使用する: splice()関数の代わりに、filter()関数やslice()関数を使用して要素を削除することもできます。以下に修正例を示します。
const newArray = array.filter((_, index) => index !== i);
console.log(newArray[i]);