私は2つの方法を見つけました。どちらの方がよいですか?この2つ以外に良い方法はありますか?
myArray.splice($.inArray(id, myArray),1);
また
myArray.splice(myArray.indexOf(id),1);
私は2つの方法を見つけました。どちらの方がよいですか?この2つ以外に良い方法はありますか?
myArray.splice($.inArray(id, myArray),1);
また
myArray.splice(myArray.indexOf(id),1);
見つからない場合、どちらのオプションも配列から最後の要素を削除するため、どちらのオプションも安全id
ではありません。
使用するかどうかに関係$.inArray()
なく、配列にない場合.indexOf()
の戻り値が返されます。メソッドに渡すと、配列から最後の項目が削除されます。-1
id
-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()
配列全体を空にします。
while (myArray.length) {
var element = myArray.shift();
element = null; // free memory
}
myArray = [];
または単一の要素を削除します。
var element = myArray.splice(id,1);
element = null; // free memory
次の方法を使用して、配列から要素を削除することもできます。
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 で動作することを確認したい場合。