从数组中删除元素的最佳方法是:javascript/jquery
best way to delete element from array:javascript/jquery
我找到了两种方法。哪一个更好?还有比这两种更好的方法吗?
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.
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- Javascript(jQuery)给了我奇怪的结果
- 为什么不是't窗口.恢复正常工作吗?(javascript/jquery)
- Javascript/jQuery中的并行Ajax调用
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- Javascript/Jquery/PHP加载页面-如何
- Javascript/Jquery Blob not showing Chrome PDF
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- OnClick/Onhover Javascript/jquery
- 如何从javascript/jquery中的复选框中获取布尔值
- javascript/jquery将utc转换为短格式的本地时间
- 在不设置协议的情况下,使用javascript/jquery更改iframe-src
- 如何向这个javascript/jquery函数添加参数
- 用JavaScript/jQuery点击图片,选中多个方框
- 使用Javascript/JQuery获取JSON GET数据
- 从数组中删除元素的最佳方法是:javascript/jquery
- Javascript/jQuery压缩一个图像正确的评论帖子,并使用Ajax Laravel 5.2保存到控制器中
- 用DRY方式Javascript/JQuery动态替换HTML
- 类似Javascript JQuery的库
- 如何在 Javascript/jQuery 中获取一些随机下拉列表的选定值