我想从 array
中删除一系列元素:
var fruits = ["Banana", "Orange1", "Apple", "Banana", "Orange", "Banana", "Orange", "Mango", "Bananax", "Orangex"];
var a = fruits.indexOf("Apple");
var b = fruits.indexOf("Mango");
var removedCars = fruits.splice(a, b);
console.log(fruits);
所以我期待:
["Banana", "Orange1", "Bananax", "Orangex"]
但结果是:
["Banana", "Orange1", "Orangex"]
为什么会这样?
有没有更快更好的方法来做到这一点?
原文由 Run 发布,翻译遵循 CC BY-SA 4.0 许可协议
Array.prototype.splice() 方法的第二个参数是要删除的元素数量,而不是结束索引。
从 Array.prototype.splice() MDN Reference 可以看出:
解决方案:
您需要计算这两个索引之间的元素数,因此使用
b-a+1
获得正确的计数。演示:
这是你的代码应该如何: