Javascript数组搜索和删除字符串?

2022-08-30 01:02:11

我有:

var array = new Array();
array.push("A");
array.push("B");
array.push("C");

我希望能够做这样的事情:

array.remove("B");

但没有删除功能。如何实现此目的?


答案 1

我实际上正在用更新的1行解决方案更新此线程:

let arr = ['A', 'B', 'C'];
arr = arr.filter(e => e !== 'B'); // will return ['A', 'C']

这个想法基本上是通过选择与要删除的元素不同的所有元素来过滤数组。

注意:将删除所有匹配项。

编辑:

如果只想删除第一个匹配项:

t = ['A', 'B', 'C', 'B'];
t.splice(t.indexOf('B'), 1); // will return ['B'] and t is now equal to ['A', 'C', 'B']

答案 2

以相反的顺序遍历列表,并使用 .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
    }
}

当必须删除搜索词的所有匹配项时,相反的顺序很重要。否则,计数器将增加,并且您将跳过元素。

当只需删除第一个匹配项时,以下各项也将起作用:

var index = array.indexOf(search_term);    // <-- Not supported in <IE9
if (index !== -1) {
    array.splice(index, 1);
}