有没有一种方法可以从JavaScript数组中删除项目?
给定一个数组:
var ary = ['three', 'seven', 'eleven'];
我想做类似的事情:
removeItem('seven', ary);
我已经研究过了,splice()但是只能按位置编号删除,而我需要一些根据其值删除项目。
如果不允许添加到本机原型,则可以是全局函数或自定义对象的方法。它从数组中删除与任何参数匹配的所有项目。
Array.prototype.remove = function() { var what, a = arguments, L = a.length, ax; while (L && this.length) { what = a[--L]; while ((ax = this.indexOf(what)) !== -1) { this.splice(ax, 1); } } return this; };
var ary = ['three', 'seven', 'eleven'];
ary.remove('seven');
/* returned value: (Array) three,eleven */
为了使其成为全球性的
function removeA(arr) { var what, a = arguments, L = a.length, ax; while (L > 1 && arr.length) { what = a[--L]; while ((ax= arr.indexOf(what)) !== -1) { arr.splice(ax, 1); } } return arr; } var ary = ['three', 'seven', 'eleven']; removeA(ary, 'seven');
/* returned value: (Array) three,eleven */
并照顾IE8及以下版本-
if(!Array.prototype.indexOf) { Array.prototype.indexOf = function(what, i) { i = i || 0; var L = this.length; while (i < L) { if(this[i] === what) return i; ++i; } return -1; }; }
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。