Array.prototype.splice 负索引和大于 1 的删除计数不起作用
Array.prototype.splice with negative indexes and delete count greater than 1 not working
假设我们有一个像 var x = [1,2,3,4,5,6]
这样的数组,我们需要删除最后两项。虽然有很多方法可以做到这一点,但我尝试使用这种方法:
x.splice(-1, 2)
理想情况下,据我所知,这应该删除最后两个元素。但它并没有相反,它只删除了一个值。
谁能解释一下哪里出了问题?
要删除您应该使用的最后 2 项 x.splice(-2)
第一个参数是起点,第二个(不是必需的 - 默认是数组的末尾)是要删除的元素数。
你应该阅读 documentation
尝试
x.splice(-2,2);
第一个参数是"minus index"(从数组末尾开始的索引),第二个参数表示要删除的元素数
var x = [1,2,3,4,5,6]
x.splice(-2,2);
console.log(x);
因为它需要删除元素的数量(这里是2),到提到的起始索引的RIGHT(这里是-1),并且NOT 在索引的左边(正如我们在逻辑上思考的那样)。
so x.splice(-1,2) 尝试删除从 -1 开始到 -1 右边的 2 个元素。但那里只有 1 个元素。所以它只删除 1 个元素。
同理:
x.splice(-3,2); // 删除 4,5。不是 3,4(向左)。
假设我们有一个像 var x = [1,2,3,4,5,6]
这样的数组,我们需要删除最后两项。虽然有很多方法可以做到这一点,但我尝试使用这种方法:
x.splice(-1, 2)
理想情况下,据我所知,这应该删除最后两个元素。但它并没有相反,它只删除了一个值。
谁能解释一下哪里出了问题?
要删除您应该使用的最后 2 项 x.splice(-2)
第一个参数是起点,第二个(不是必需的 - 默认是数组的末尾)是要删除的元素数。
你应该阅读 documentation
尝试
x.splice(-2,2);
第一个参数是"minus index"(从数组末尾开始的索引),第二个参数表示要删除的元素数
var x = [1,2,3,4,5,6]
x.splice(-2,2);
console.log(x);
因为它需要删除元素的数量(这里是2),到提到的起始索引的RIGHT(这里是-1),并且NOT 在索引的左边(正如我们在逻辑上思考的那样)。
so x.splice(-1,2) 尝试删除从 -1 开始到 -1 右边的 2 个元素。但那里只有 1 个元素。所以它只删除 1 个元素。
同理: x.splice(-3,2); // 删除 4,5。不是 3,4(向左)。