我正在为演示文稿创建演示代码。
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);这段代码几乎工作得很完美,但是有一个奇怪的问题:乱七八糟。无论我重命名它多少次,或者在它之前或之后放置另一个元素,它永远不会从列表中被删除。
我试图在列表中引入新元素,希望发现索引是一个奇怪的问题,但它仍然保留在列表中。
通过实验,我了解到,对于以y结尾的任何一组连续元素,只有第一个元素将被删除。我该怎么解决这个问题?
发布于 2022-11-14 08:03:04
使用过滤方法。你的条件写在里面了过滤器
fruitList = fruitList.filter(item => item.charAt(item.length-1) != "y")
console.log(fruitList);发布于 2022-11-14 08:03:17
那是因为果酱先被移除,然后用它来代替它,我被增加了,而对它的检查被跳过了。为了防止这种情况,在fruitList.splice后将I降低1。
发布于 2022-11-14 08:04:33
请试一试,当你匹配你的条件并进行拼接时,你必须减少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://stackoverflow.com/questions/74428459
复制相似问题