0

配列から要素を削除したいのですが、spliceメソッドは、配列の最後までスターインデックスからすべての要素を削除します。

私はこのコードを持っています:

function basketItemRemove(obj, id) {
...

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

スプライスはインデックス0で削除されないため、ID 0を確認します。次にsplice(id, id);、配列の2番目の要素でのみ適切に機能しますが、要素が3番目以上の場合は、配列の最後まですべて削除されます。

4

3 に答える 3

6

の2番目の引数spliceは、削除する要素の数であり、削除を停止するポイントではありません。1つの要素を削除する場合は、次を使用します1

tempBasketList.splice(id, 1);

スプライスはインデックス0で削除されないため、ID0を確認します

それはそうですが、それがゼロのアイテムを削除することを意味するので、それが2番目の引数に与えるものである場合はそうではありません。

splice(上記のリンクからの)署名は次のように説明されています。

splice(start, deleteCount [ , item1 [ , item2 [ , … ] ] ] )
  • start:どこから始めればいいのか(インデックス)
  • deleteCount:その場所で削除する数
  • item1、、 :その場所に追加するオプションのアイテムitem2item3削除した後、の場合deleteCount > 0
于 2013-01-27T11:32:10.033 に答える
2

の構文spliceは次のとおりです。

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

つまり、単一の要素を1つだけ削除する必要がある場合、2番目の引数は次のようになります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 に答える