0

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

我有这个代码:

function basketItemRemove(obj, id) {
...

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

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

4

3 回答 3

6

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

tempBasketList.splice(id, 1);

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

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

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

splice(start, deleteCount [ , item1 [ , item2 [ , … ] ] ] )
  • start:从哪里开始做事(索引)
  • deleteCount: 在那个位置删除多少
  • item1, item2, item3: 在该位置添加的可选项目(删除后,如果deleteCount > 0
于 2013-01-27T11:32:10.033 回答
2

的语法splice是:

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

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

tempBasketList.splice(id, 1);
于 2013-01-27T11:33:17.393 回答
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)
于 2013-01-27T11:37:56.907 回答