繁体   English   中英

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

[英]Javascript array search and remove string?

我有:

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

我希望能够执行以下操作:

array.remove("B");

但是没有删除功能。 我该如何实现?

我实际上是用更新的 1-line 解决方案更新这个线程:

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

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

一个班轮列表

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

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

1. 仅删除第一个:如果您确定该项目存在,请使用

array.splice(array.indexOf('B'), 1);

2. 仅删除最后一个:如果您确定该项目存在,请使用

array.splice(array.lastIndexOf('B'), 1);

3. 删除所有出现:

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

演示

你需要找到你要找的内容与位置.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)​​​​;

这将处理所有事件。

简单地

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

简单的解决方案 (ES6)

如果你没有重复的元素

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

在线演示(小提琴)

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

或者你可以使用:

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

changedArray 将包含没有值 'B'

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

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

用:

array.splice(2, 1);

这将从数组中删除一项,从索引 2(第 3 项)开始

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM