javascript splice无法正常工作

时间:2013-01-27 11:30:28

标签: javascript

我想从数组中删除一个元素,但是splice方法从星号索引中移除所有元素直到数组结束。

我有这段代码:

function basketItemRemove(obj, id) {
...

    if (id == 0)
        tempBasketList.splice(id, id + 1);
    else
        tempBasketList.splice(id, id);
...
}

我检查id 0,因为splice不会删除索引0.然后splice(id, id);只适用于数组的第二个元素,但如果element是第三个或更高,那么它将删除所有直到数组的结尾。

3 个答案:

答案 0 :(得分:5)

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

tempBasketList.splice(id, 1);
  

我检查id 0,因为splice不会删除索引0

确实如此,但如果这是你为第二个参数提供的内容,那就不行了,因为它意味着删除零项。

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

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

答案 1 :(得分:2)

splice的语法是:

  

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

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

tempBasketList.splice(id, 1);

答案 2 :(得分:0)

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

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

然后,

tempBasketList.remove(obj)