這個問題在這里已經有了答案: 回圈遍歷陣列并洗掉專案,而不中斷 for 回圈 17 個答案 9 天前關閉。
自9 天前起,社區正在審查是否重新開放此問題。
let arr = [1, "5", 3, 27, undefined, { name: 'Steven' }, 11];
for (let i = 0; i < arr.length; i ) {
if (typeof arr[i] !== 'number') {
arr.splice(i, 1);
}
}
console.log(arr); // output is: [1, 3, 27, {…}, 11]
如果我只是交換物件的位置并且最后一個數字輸出不同
let arr = [1, "5", 3, 27, undefined, 11, { name: 'Steven' }];
for (let i = 0; i < arr.length; i ) {
if (typeof arr[i] !== 'number') {
arr.splice(i, 1);
}
}
console.log(arr); // output is: [1, 3, 27, 11]
誰能解釋為什么?
uj5u.com熱心網友回復:
在迭代它時,您不應該改變陣列長度。建議您使用過濾器
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514798.html
上一篇:根據出現的情況將專案插入串列
