這個問題在這里已經有了答案: 回圈遍歷陣列并洗掉專案,而不中斷 for 回圈 17 個答案 40 分鐘前關閉。
我正在為演示文稿創建演示代碼。
var fruitList = ["apple", "banana", "cherry", "durian", "elderberry", "fig", "grape", "huckleberry", "incaberry", "juniper", "kapok", "lime", "mango", "nectarine", "olive", "plum", "quince", "rambutan", "strawberry", "tangerine", "ugli", "vanilla", "watermelon", "xigua", "yarrow", "zhe"];
for (var i = 0; i < fruitList.length; i ) {
if (fruitList[i].charAt(fruitList[i].length-1) == "y") {
fruitList.splice(i, 1);
}
}
console.log(fruitList);
這段代碼幾乎可以完美運行,但有一個奇怪的問題:incaberry。無論我重命名它多少次,或者在它之前或之后放置另一個元素,它都不會從串列中洗掉。
我嘗試向串列中引入新元素,希望發現索引存在一些奇怪的問題,但它仍然留在串列中。
通過實驗,我了解到對于任何以 y 結尾的連續元素集,只會洗掉第一個元素。我該如何解決?
uj5u.com熱心網友回復:
使用過濾方法。把你的條件寫在里面 過濾器
for (var i = 0; i < fruitList.length; i ) {
fruitList = fruitList.filter(item => item.charAt(item.length-1) != "y")
}
console.log(fruitList);
uj5u.com熱心網友回復:
那是因為越橘首先被移除,印加莓取而代之,i 增加并且對印加莓的檢查被跳過。為了防止這種情況,在 之后將 i 減一fruitList.splice。
uj5u.com熱心網友回復:
i請試試這個,當你匹配你的條件并做拼接時,你必須減少。
var fruitList = ["apple", "banana", "cherry", "durian", "elderberry", "fig", "grape", "huckleberry", "incaberry", "juniper", "kapok", "lime", "mango", "nectarine", "olive", "plum", "quince", "rambutan", "strawberry", "tangerine", "ugli", "vanilla", "watermelon", "xigua", "yarrow", "zhe"];
for (var i = 0; i < fruitList.length; i ) {
if (fruitList[i].at(-1) === "y") {
fruitList.splice(i, 1);
i--;
}
}
console.log(fruitList);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/533019.html
下一篇:檢查密碼是否也包含符號不起作用
