如何从JavaScript中的数组中删除特定的元素?
  我有一个整数数组,我使用.push()方法向它添加元素。 
  有没有简单的方法从数组中删除特定的元素?  相当于类似array.remove(int);  。 
我必须使用核心JavaScript - 不允许任何框架。
  找到要删除的数组元素的index ,然后使用splice删除该索引。 
var array = [2, 5, 9];
var index = array.indexOf(5);
if (index > -1) {
  array.splice(index, 1);
}
// array = [2, 9]
  splice的第二个参数是要移除的元素的数量。  请注意, splice会在适当位置修改数组并返回一个包含已被移除的元素的新数组。 
注意 :浏览器对indexOf的支持是有限的; 它在Internet Explorer 7和8中不受支持。
  如果您需要在不受支持的浏览器中使用indexOf ,请尝试以下polyfill 。  在这里找到关于这个polyfill更多信息。 
Array.prototype.indexOf || (Array.prototype.indexOf = function(d, e) {
    var a;
    if (null == this) throw new TypeError('"this" is null or not defined');
    var c = Object(this),
        b = c.length >>> 0;
    if (0 === b) return -1;
    a = +e || 0;
    Infinity === Math.abs(a) && (a = 0);
    if (a >= b) return -1;
    for (a = Math.max(0 <= a ? a : b - Math.abs(a), 0); a < b;) {
        if (a in c && c[a] === d) return a;
        a++
    }
    return -1
});
  我不知道你期待array.remove(int)的行为。  有三种可能性,我可以想象你可能想要。 
  删除索引为i的数组元素: 
array.splice(i, 1);
  如果你想删除与价值的每一个元素number从数组: 
for(var i = array.length - 1; i >= 0; i--) {
    if(array[i] === number) {
       array.splice(i, 1);
    }
}
  如果您只是想让索引i的元素不再存在,但您不希望其他元素的索引发生更改: 
delete array[i];
2016年10月编辑
在这个代码示例中,我使用“array.filter(...)”函数从数组中删除不需要的项目,该函数不会更改原始数组并创建一个新数组。 如果您的浏览器不支持此功能(例如,版本9之前的IE或版本1.5之前的Firefox),请考虑使用Mozilla中的过滤器填充 。
删除项目(ECMA-262版5代码又名oldstyle JS)
var value = 3
var arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(function(item) { 
    return item !== value
})
console.log(arr)
// [ 1, 2, 4, 5 ]
删除项目(ES2015代码)
let value = 3
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => item !== value)
console.log(arr)
// [ 1, 2, 4, 5 ]
重要 ES2015“()=> {}”在IE中完全不支持“箭头函数”语法,Chrome前45版本,Firefox前22版本,Safari前10版本。 要在旧版浏览器中使用ES2015语法,您可以使用BabelJS
删除多个项目(ES2016代码)
此方法的另一个优点是可以删除多个项目
let forDeletion = [2, 3, 5]
let arr = [1, 2, 3, 4, 5, 3]
arr = arr.filter(item => !forDeletion.includes(item))
// !!! Read below about array.includes(...) support !!!
console.log(arr)
// [ 1, 4 ]
重要的 “array.includes(...)”功能在IE中完全不支持,47版本之前的Chrome,43版本之前的Firefox,9版本之前的Safari和14版之前的Edge,所以这里是来自Mozilla的polyfill
删除多个项目(尖端实验JavaScript ES2018?)
// array-lib.js
export function remove(...forDeletion) {
    return this.filter(item => !forDeletion.includes(item))
}
// main.js
import { remove } from './array-lib.js'
let arr = [1, 2, 3, 4, 5, 3]
// :: This-Binding Syntax Proposal
// using "remove" function as "virtual method"
// without extending Array.prototype
arr = arr::remove(2, 3, 5)
console.log(arr)
// [ 1, 4 ]
在BabelJS中自己试试:)
参考
上一篇: How do I remove a particular element from an array in JavaScript?
