JavaScript数组search和删除string?
我有:
var array = new Array(); array.push("A"); array.push("B"); array.push("C");
我希望能够做到这样的事情:
array.remove("B");
但是没有删除function。 我如何做到这一点?
以相反的顺序遍历列表,并使用.splice
方法。
var array = ['A', 'B', 'C']; // Test var search_term = 'B'; for (var i=array.length-1; i>=0; i--) { if (array[i] === search_term) { array.splice(i, 1); // break; //<-- Uncomment if only the first term has to be removed } }
search词的所有出现必须被删除时,相反的顺序是重要的。 否则,柜台会增加,你会跳过元素。
当只有第一次被删除时,以下内容也将起作用:
var index = array.indexOf(search_term); // <-- Not supported in <IE9 if (index !== -1) { array.splice(index, 1); }
我实际上用更新的1行解决scheme更新了这个线程:
let arr = ['A', 'B', 'C']; let el = 'B'; arr = arr.filter(e => e !== el);
这个想法基本上是通过select与要删除的元素不同的所有元素来过滤数组。
注意:将删除所有的事件。
DEMO
您需要使用.indexOf()
查找所需的位置,然后使用.indexOf()
将其删除。
function remove(arr, what) { var found = arr.indexOf(what); while (found !== -1) { arr.splice(found, 1); found = arr.indexOf(what); } } var array = new Array(); array.push("A"); array.push("B"); array.push("C"); remove(array, 'B'); alert(array);
function remove(arr, what) { var found = arr.indexOf(what); while (found !== -1) { arr.splice(found, 1); found = arr.indexOf(what); } } var array = new Array(); array.push("A"); array.push("B"); array.push("C"); remove(array, 'B'); alert(array);
这将照顾所有事件。
使用:
array.splice(1, 1);
这将从数组中删除第一个项目。
你可以通过在数组原型中添加一个remove函数来解决这个问题。
Array.prototype.remove = function(elem, all) { for (var i=this.length-1; i>=0; i--) { if (this[i] === elem) { this.splice(i, 1); if(!all) break; } } return this; };
用法:
var myArray = ['A', 'B', 'C', 'D', 'A'] myArray.remove('A'); => ["A", "B", "C", "D"] myArray.remove('A', true); => ["B", "C", "D"]
但要小心的扩展原生的原型可能是反模式!
你必须写你自己的删除。 您可以遍历数组,获取要删除的项目的索引,并使用splice
删除它。
或者,您可以创build一个新数组,循环当前数组,并且如果当前对象与您想要删除的内容不匹配,请将其放入一个新数组中。
使用array.splice
/*array.splice(index , howMany[, element1[, ...[, elementN]]]) array.splice(index) // SpiderMonkey/Firefox extension*/ array.splice(1,1)
来源: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice