我找到了两种方法。哪一个更好?还有比这两个更好的方法吗?
myArray.splice($.inArray(id, myArray),1);
或者
myArray.splice(myArray.indexOf(id),1);
我找到了两种方法。哪一个更好?还有比这两个更好的方法吗?
myArray.splice($.inArray(id, myArray),1);
或者
myArray.splice(myArray.indexOf(id),1);
这两个选项都不安全id
,因为如果找不到,两者都会从数组中删除最后一个元素。
无论您是使用$.inArray()
还是.indexOf()
返回-1
ifid
不在数组中,当您传递-1
给该.splice()
方法时,它将从数组中删除最后一项。
所以你真的应该说:
var index = $.inArray(id, myArray); // or myArray.indexOf(id)
if (index > -1) myArray.splice(index, 1);
显然,如果需要,您可以将上述内容封装在您自己的函数中。
至于哪个更好$.inArray()
,.indexOf()
这取决于您是否关心支持不支持的旧浏览器(主要是IE8及以下).indexOf()
。你应该注意你的代码是否在公共网站上,因为很多人仍然使用 IE8 和 IE7。如果您已经在使用 jQuery,您最好还是坚持使用$.inArray()
,否则请使用.indexOf()
MDN 上的 shim。
清空整个数组:
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 中工作。