如何从数组中删除一个特定值? 类似 :

array.remove(value);

制约:我必须使用核心 JavaScript 。 框架不允许 。


当前回答

由你决定如何行动。

一种办法是使用复数法,从数组中删除项目:

let array = [1, 2, 3]
array.splice(1, 1);
console.log(array)

// return [1, 3]

但要确保您通过第二个参数,否则最终会删除索引后的全部数组。

第二个办法是使用过滤法,其好处在于它不可改变,这意味着你的主阵列不会被操纵:

const array = [1, 2, 3];
const newArray = array.filter(item => item !== 2)
console.log(newArray)

// return [1, 3]

其他回答

const newArray = oldArray.filter(item => item !== removeItem);

如果您使用现代浏览器, 您可以使用. 过滤器 。

Array. prototype. remove = 函数 (x) { 返回此. filter( 函数 (v) { 返回 v $ ylexx; } ; } ; var a = ["a", b", c"]; var b = a. remove ('a' );

我测试了复数和过滤器 看哪个更快:

let someArr = [... Array(999999). keys ()] 控制台.time(“ filter” ) someArr. filter(x x = = = = = 666666) 控制台.timeEnd(“ filter ” ) 控制台.time(“ splice by indexof ” ) someArr. splice( some Arr. indexof( 6666), 1) 控制台.timeEnd( “ splice by indexof ” )

在我的机器上, 复数会更快。 这有道理, 因为复数只编辑一个已有的数组, 而过滤器会创建一个新的数组 。

因此,过滤器在逻辑上是更清洁的(更容易阅读),并且更适合使用不可改变状态的编码风格。因此,由你来决定你是否想做出这种权衡。

在 ES6 中, Set 收藏提供了从数组中删除特定值的删除方法,然后根据分布运算符将 Set 收藏转换成数组。

函数 删除项目( list, val) { const set = new Set( list); set.delet( val); 设置. delete( val); 返回 [...set] ;} const 字母 = [“ A” , “ B” , “ C” , “ D” , “ E ” ; 控制台. log( deletetetetemmot( 字母, “ C ” ); / / [ “ A” , “ B” , “ D” , “ E ” 。

[2,3,5].filter(i => ![5].includes(i))