javascript - 从数组中删除一定范围的元素

标签 javascript arrays object splice

我想从数组中删除一系列元素:

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"]

为什么会这样?

有没有更快更好的方法来做到这一点?

最佳答案

的第二个参数Array.prototype.splice() 是要删除的元素数,而不是结束索引。

Array.prototype.splice() MDN Reference可以看出那:

Parameters

start Index at which to start changing the array (with origin 0). If greater than the length of the array, actual starting index will be set to the length of the array. If negative, will begin that many elements from the end of the array (with origin 1) and will be set to 0 if absolute value is greater than the length of the array.

deleteCount Optional An integer indicating the number of old array elements to remove. If deleteCount is 0, no elements are removed. In this case, you should specify at least one new element. If deleteCount is greater than the number of elements left in the array starting at start, then all of the elements through the end of the array will be deleted.

解决方法:

您需要计算这两个索引之间的元素数量,因此使用 (b - a) + 1 来获得正确的计数。

演示:

这是正确使用splice的代码:

var fruits = ["Banana", "Orange1", "Apple", "Banana", "Orange", "Banana", "Orange", "Mango", "Bananax", "Orangex"];
var a = fruits.indexOf("Apple");
var b = fruits.indexOf("Mango");

var removedFruits = fruits.splice(a, (b - a) + 1);

console.log(fruits);

关于javascript - 从数组中删除一定范围的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46198689/

相关文章:

javascript - 如何修复 NaN 错误 - 参数值不进行加、减、除或乘 - 在 JavaScript 中

javascript - 选择单个 HighCharts 容器会导致其他容器改变位置

javascript - 将任意 Vue.js 组件添加到父组件

c - 初始化数组时随机数生成器出错

php - 使用以下格式从 PHP 中的 JSON 数组获取值?

javascript - 动画队列

php - 从使用 SQL 获取的数据中获取不同格式的数组

javascript - 为什么我的对象值在我的 AJAX 回调函数之外不可用?

c++ - 用花括号 C++ 实例化一个对象

Javascript - 为什么我的应用程序认为这个数组是空的?