如何在javascript中删除数组中的特定元素

How to remove specific element in array in javascript

本问题已经有最佳答案,请猛点这里访问。

如果我有数组,例如:

1
a=["a","b","c"]

我需要类似的东西

1
a.remove("a");

我该怎么做?


1
2
3
4
var newArray = [];
var a=["a","b","c"];
for(var i=0;i<a.length;i++)
    if(a[i]!=="a") newArray.push(a[i]);

编辑:从更新版本的JS开始:

1
2
var a = ["a","b","c"];
var newArray = a.filter(e => e !=="a");


1
2
3
4
5
remove = function(ary, elem) {
    var i = ary.indexOf(elem);
    if (i >= 0) ary.splice(i, 1);
    return ary;
}

如果目标浏览器支持array.indexOf,则使用该页上的回退代码。

如果您需要删除所有相同的元素,请使用rocket建议的filter

1
2
3
removeAll = function(ary, elem) {
    return ary.filter(function(e) { return e != elem });
}


如果您使用的是现代浏览器,则可以使用.filter

1
2
3
4
5
6
7
8
Array.prototype.remove = function(x){
    return this.filter(function(v){
        return v !== x;
    });
};

var a = ["a","b","c"];
var b = a.remove('a');

我想出了一个简单的解决方案,从数组中省略必要的元素。

1
2
3
4
5
6
7
8
9
10
11
function myFunction()
{
var fruits = ["One","Two","Three","Four"];

<!-- To drop the element"Three"-->
<!--splice(elementid, number_of_element_remove)-->
fruits.splice(2,1);

var x=document.getElementById("demo");
x.innerHTML=fruits;
}


1
2
3
let xx=['a','a','b','c'];  // array
let elementToRemove='a';  // element to remove
xx =xx.filter((x)=> x!=elementToRemove) // xx will contain all element except 'a'

如果您不介意额外的有效负载(约4KB小型化和gzip化),可以使用下划线库的without函数:

_.无(["A"、"B"、"C"],"A");

下划线将为您提供这个函数+许多非常方便的函数。