JavaScript拼接无法正常工作

javascript splice don't work properly

本文关键字:工作 常工作 拼接 JavaScript      更新时间:2023-09-26

我想从数组中删除一个元素,但是拼接方法从星形索引中删除所有元素,直到数组的末尾。

我有这个代码:

function basketItemRemove(obj, id) {
...
    if (id == 0)
        tempBasketList.splice(id, id + 1);
    else
        tempBasketList.splice(id, id);
...
}

我检查 id 0,因为拼接不会使用索引 0 删除。然后splice(id, id);只能正确处理数组的第二个元素,但如果元素是第三个或更高,那么它会删除所有元素,直到数组的末尾。

splice的第二个参数是要删除多少元素,而不是停止删除它们的点。如果要删除一个元素,请使用1

tempBasketList.splice(id, 1);

我检查id 0,因为拼接不会用索引0删除

确实如此,但如果这是您为第二个参数给出的内容,则不会,因为它意味着删除零项。

splice的签名(来自上面的链接)解释说:

splice(start, deleteCount [ , item1 [ , item2 [ , … ] ] ] )
  • start:从哪里开始做事(指数)
  • deleteCount:在该位置删除多少
  • item1item2item3 : 要在该位置添加的可选项目(删除后,如果deleteCount > 0

splice的语法是:

array.splice(index , howMany[, element1[, ...[, elementN]]])

这意味着,如果您只需要删除一个元素,则第二个参数应1

tempBasketList.splice(id, 1);

我将创建一个原型以使事情变得更加容易,

Array.prototype.delete = function (obj) {
    var index = this.indexOf(obj);// Get the index of object
    this.splice(index, 1);// delete it
};

然后

tempBasketList.remove(obj)