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(向左)。