从数组中删除元素的最佳方法是:javascript/jquery

best way to delete element from array:javascript/jquery

本文关键字:javascript jquery 方法 最佳 数组 删除 元素      更新时间:2023-09-26

我找到了两种方法。哪一个更好?还有比这两种更好的方法吗?

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

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

这两个选项都不安全,因为如果找不到id,两个选项将从数组中删除最后一个元素。

无论使用$.inArray()还是.indexOf(),如果id不在数组中,都将返回-1,并且当将-1传递给.splice()方法时,它将从数组中删除最后一项。

所以你真的应该说:

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

显然,如果需要,您可以将以上内容封装在自己的函数中。

至于$.inArray().indexOf()中的哪一个更好,这取决于您是否关心支持不支持.indexOf()的旧浏览器(主要是IE8和更少)。您应该注意您的代码是否在公共网站上,因为很多人仍然使用IE8和IE7。如果您已经在使用jQuery,那么最好使用$.inArray(),否则在MDN中使用.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.

中工作