我想从数组中删除一个元素,但是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是第三个或更高,那么它将删除所有直到数组的结尾。
答案 0 :(得分:5)
splice
的第二个参数是要删除多少个元素,而不是停止删除它们的点。如果要删除一个元素,请使用1
:
tempBasketList.splice(id, 1);
我检查id 0,因为splice不会删除索引0
确实如此,但如果这是你为第二个参数提供的内容,那就不行了,因为它意味着删除零项。
splice
的签名(来自上面的链接)解释:
splice(start, deleteCount [ , item1 [ , item2 [ , … ] ] ] )
start
:从哪里开始做事(索引)deleteCount
:在该位置删除多少item1
,item2
,item3
:要在该位置添加的可选项(删除后,如果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)