从javascript数组中删除字符串元素

可以有人告诉我如何从数组中删除字符串元素我有谷歌这个和我得到的是通过索引号删除

我的例子:

var myarray = ["xyz" , "abc" , "def"] ; var removeMe = "abc" ; myarray.remove(removeMe) ; consle.log(myarray) ; 

这是我从控制台得到的:

 Uncaught TypeError: Object xyz,abc,def has no method 'remove' 

的jsfiddle

来自https://stackoverflow.com/a/3955096/711129 :

 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') 

或者,使其成为一个全球function:

 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') 

你必须自己做一个function。 您可以循环遍历数组并从那里删除元素,或者让此function为您完成。 无论哪种方式,它都不是标准的JSfunction。

因为你正在使用jQuery

myarray.splice($.inArray("abc", myarray), 1);

编辑如果项目不在数组中,这个“单行”可能会引发错误。 好一点的东西

 var index = $.inArray("abc", myarray); if (index>=0) myarray.splice(index, 1); 

试试如下,

 myarray.splice(myarray.indexOf(removeMe),1); 

您可以在不支持indexOf的浏览器中添加以下脚本( 来自MDN )

 if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { "use strict"; if (this == null) { throw new TypeError(); } var t = Object(this); var len = t.length >>> 0; if (len === 0) { return -1; } var n = 0; if (arguments.length > 0) { n = Number(arguments[1]); if (n != n) { // shortcut for verifying if it's NaN n = 0; } else if (n != 0 && n != Infinity && n != -Infinity) { n = (n > 0 || -1) * Math.floor(Math.abs(n)); } } if (n >= len) { return -1; } var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0); for (; k < len; k++) { if (k in t && t[k] === searchElement) { return k; } } return -1; } }