1

私は2つの方法を見つけました。どちらの方がよいですか?この2つ以外に良い方法はありますか?

 myArray.splice($.inArray(id, myArray),1);

また

myArray.splice(myArray.indexOf(id),1);
4

3 に答える 3

2

見つからない場合、どちらのオプションも配列から最後の要素を削除するため、どちらのオプションも安全idではありません。

使用するかどうかに関係$.inArray()なく、配列にない場合.indexOf()の戻り値が返されます。メソッドに渡すと、配列から最後の項目が削除されます。-1id-1.splice()

だから本当にあなたは言うべきです:

var index = $.inArray(id, myArray); // or myArray.indexOf(id)
if (index > -1) myArray.splice(index, 1);

明らかに、必要に応じて、独自の関数で上記をカプセル化できます。

$.inArray()とのどちら.indexOf()が優れているかは、.indexOf(). 多くの人がまだ IE8 と IE7 を使用しているため、コードが公開 Web サイトにある場合は注意が必要です。すでに jQuery を使用している場合は、そのまま使用することもできますが、それ以外の場合は MDN$.inArray()のシムを使用してください。.indexOf()

于 2012-09-12T10:22:42.910 に答える
0

配列全体を空にします。

while (myArray.length) {
  var element = myArray.shift();
  element = null; // free memory
}
myArray = [];

または単一の要素を削除します。

var element = myArray.splice(id,1);
element = null; // free memory
于 2012-09-12T10:00:37.280 に答える
0

次の方法を使用して、配列から要素を削除することもできます。

var y = [1, 2, 3]
var removeItem = 2;

y = jQuery.grep(y, function(value) {
  return value != removeItem;
});

また

var arr = ["jQuery","JavaScript","HTML","Ajax","Css"];
var itemtoRemove = "HTML";
arr.splice($.inArray(itemtoRemove, arr),1);

上記の両方の方法が最適です。

注: IE < 9 は、配列で .indexOf() をサポートしていません。コードが IE で動作することを確認したい場合。

于 2012-09-12T10:28:41.970 に答える