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

array.remove(value);

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


当前回答

您永远不应该根据功能编程模式对阵列进行变换。 您可以创建一个新的阵列, 而不引用您想要更改的数据, 使用 ECMAScript 6 方法过滤器 ;

var myArray = [1, 2, 3, 4, 5, 6];

如果您想从数组中删除 5 个, 您可以简单地这样做 :

myArray = myArray.filter(value => value !== 5);

这将给您一个没有您想要删除的值的新数组。 因此结果将是 :

 [1, 2, 3, 4, 6]; // 5 has been removed from this array

欲了解更多信息,请阅读Array.filter上的MDN文件。

其他回答

这取决于你是否想保持一个空位。

如果您想要一个空位 :

array[index] = undefined;

如果你不想空空的位子:

保留原件:

oldArray = [...array];

这将修改数组。

array.splice(index, 1);

如果您需要该项的值, 您可以保存返回的数组元素 :

var value = array.splice(index, 1)[0];

如果您想要在数组的两端删除, 您可以在最后一个或数组中使用数组. pop () 。 第一个或数组中可以使用数组. translate. pop () 。 translate () toft () for first one (两者都返回项目值 ) 。

如果您不知道项目的索引, 您可以使用数组。 indexof( 项目) 来获取它( 在 if( ) 中获得一个项, 或者在 a while( ) 中获取全部项 ) 。 数组。 indexof( 项目) 返回索引, 或 - 1 , 如果找不到的话 。

我建议删除一个使用删除和过滤的阵列项目:

var arr = [1,2,3,4,5,5,5,6,7,8,9];删除ar[5];rr = arr.filter(职能(项目){返回项目!=未定义;});//结果:[1、2,3,4,5,6,6,7,7,8,9];删除ar[5];ar = arr.filter(职能(项目){返回项目);//结果:[1、2,3,4,6,6,6,7,7,8,9] 控制台。

因此,我们只能删除一个特定的数组项目,而不是所有具有相同价值的项目。

非就地解决办法

arr.slice(0,i).concat(arr.slice(i+1));

arr = [10, 20, 30, 40, 50] (i) = 2;// 位置删除(从0开始) ; r = ar. selice (0, i). concat (arr. slice (i+1)); 控制台.log(r);

如果数组含有重复的值,而您想要删除目标的所有发生点, 那么这就是前进的道路...

let data = [2, 5, 9, 2, 8, 5, 9, 5];
let target = 5;
data = data.filter(da => da !== target);

注: - 过滤器不会改变原始数组;相反它会创建一个新的数组。

所以再次分配很重要。

这又引出了另一个问题,你无法制造变异的Const。它应该可以或可以。

我找到了这个博客文章,

9 从 JavaScript 阵列中删除元素的方法 - 附加如何安全清除 JavaScript 阵列

我更喜欢使用过滤器 () :

var filtered_arr = arr.filter(function(ele){
   return ele != value;
})