如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
当前回答
我喜欢这个单行道:
arr.includes(val) && arr.splice(arr.indexOf(val), 1)
ES6 (无互联网探索者支持) 清除已就位 。 快速 : 没有重复重复或重复 。 支持删除无定义或未定义的值
作为原型
// remove by value. return true if value found and removed, false otherwise
Array.prototype.remove = function(val)
{
return this.includes(val) && !!this.splice(this.indexOf(val), 1);
}
(是的,我读了所有其他的答案 找不到一个结合的答案 包含和串联在同一行。 )
其他回答
使用过滤器是实现此要求的优雅方式。 过滤器不会改变原始数组 。
const num = 3; 允许 rr = [1, 2, 3, 4]; const arr2 = arr. filter(x xx x x !x != num); 控制台. log (rr); / / [1, 2, 3, 4] 控制台. log(rr2) / / [1, 2, 4]
如果您想要实现突变删除行为, 您可以使用过滤器, 然后将结果指定到原始数组 。
constnum = 3; let arr = [1, 2, 3, 4]; arr = arr. filter(x x \ x = = = = = = = = = = = = = = = = = =; 控制台. log(rr); / / [1, 2, 4]
顺便说一下, 过滤器将删除在条件中匹配的所有事件( 不仅仅是第一次发生) , 就像您在下面的例子中看到的一样 。
const num = 3; 允许 rr = [1, 2, 3, 3, 3, 3, 4]; arr = arr. filter(x x x x x = = = = = = = = num; 控制台. log (rr); / / [1, 2, 4]
万一您只想删除第一种情况,您可以使用复数法
onst num = 3; 让 arr = [1, 2, 3, 3, 3, 3, 4]; const idx = rr. indexof( num); arr.spice( idx, idx) = = 1 = 1 = 1 = 1 ; 控制台. log( rr) = [ 1, 2, 3, 3, 3, 4] / [ 1, 3, 3, 4]
正在删除带有索引和相交点的值 !
function removeArrValue(arr,value) {
var index = arr.indexOf(value);
if (index > -1) {
arr.splice(index, 1);
}
return arr;
}
我设定了一个函数:
function pop(valuetoremove, myarray) {
var indexofmyvalue = myarray.indexOf(valuetoremove);
myarray.splice(indexofmyvalue, 1);
}
并用它这样:
pop(valuetoremove, myarray);
创建新阵列 :
var my_array = new Array();
添加元素到此数组 :
my_array.push("element1");
函数索引of (返回指数或 -1 未找到时) :
var indexOf = function(needle)
{
if (typeof Array.prototype.indexOf === 'function') // Newer browsers
{
indexOf = Array.prototype.indexOf;
}
else // Older browsers
{
indexOf = function(needle)
{
var index = -1;
for (var i = 0; i < this.length; i++)
{
if (this[i] === needle)
{
index = i;
break;
}
}
return index;
};
}
return indexOf.call(this, needle);
};
检查此元素的索引( 使用 Firefox 和 Internet Explorer 8 (及以后) 测试) :
var index = indexOf.call(my_array, "element1");
从数组中删除位于索引处的 1 元素
my_array.splice(index, 1);
如果您必须支持旧版的 Internet Explorer , 我建议使用以下多个填充( 注意: 这不是一个框架 ) 。 这是所有现代阵列方法( JavaScript 1. 8. 5/ ECMAScript 5 Array Extras) 的100%的后向兼容替换, 用于 Internet Explorer 6+, Firefox 1. 5+, Chrome, Safari, & Opera 。
https://github.com/pludude/array-generics https://github.com/pludude/ array-generics https://github.com/plusdude/arary-generics/servics/