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

时间:2012-03-20 18:40:18

标签: javascript arrays

我有:

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

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

array.remove("B");

但没有删除功能。我该如何做到这一点?

10 个答案:

答案 0 :(得分:157)

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

答案 1 :(得分:91)

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

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

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

注意:将删除所有出现的内容。

答案 2 :(得分:18)

DEMO

您需要使用.indexOf()找到所需内容的位置,然后使用.splice()

将其删除
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)​​​​;

这将照顾所有事件。

答案 3 :(得分:15)

One Liners列表

让我们为这个数组解决这个问题:

var array = ['A', 'B', 'C'];

<强> 1。仅删除第一个: 使用如果您确定该项目存在,则&lt; IE9

中不支持
array.splice(array.indexOf('B'), 1);

<强> 2。只删除最后一个: 使用如果您确定该项目存在,则&lt; IE9

中不支持
array.splice(array.lastIndexOf('B'), 1);

第3。删除所有出现的内容:  &lt; IE9

不支持
array = array.filter(v => v !== 'B'); 

答案 4 :(得分:9)

简单地

array.splice(array.indexOf(item), 1);

答案 5 :(得分:2)

简单解决方案(ES6)

如果您没有重复元素

Array.prototype.remove = function(elem) {
  var indexElement = this.findIndex(el => el === elem);
  if (indexElement != -1)
    this.splice(indexElement, 1);
  return this;
};   

Online demo (fiddle)

答案 6 :(得分:1)

使用:

array.splice(2, 1);

这将从索引2(第3项)

开始从数组中删除一个项目

答案 7 :(得分:1)

你必须自己写删除。您可以遍历数组,获取要删除的项目的索引,并使用splice将其删除。

或者,您可以创建一个新数组,遍历当前数组,如果当前对象与您要删除的对象不匹配,请将其放入新数组中。

答案 8 :(得分:0)

使用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

答案 9 :(得分:0)

const changedArray = array.filter( function(value) {
  return value !== 'B'
});

或者您可以使用:

const changedArray = array.filter( (value) => value === 'B');

changedArray将包含无值'B'