如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
如何从数组中删除一个特定值? 类似 :
array.remove(value);
制约:我必须使用核心 JavaScript 。 框架不允许 。
当前回答
如果您使用现代浏览器, 您可以使用. 过滤器 。
Array. prototype. remove = 函数 (x) { 返回此. filter( 函数 (v) { 返回 v $ ylexx; } ; } ; var a = ["a", b", c"]; var b = a. remove ('a' );
其他回答
定义:
function RemoveEmptyItems(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) if (arr[i] != null && arr[i].length > 0) result.push(arr[i]);
return result;
}
用法 :
var arr = [1,2,3, "", null, 444];
arr = RemoveEmptyItems(arr);
console.log(arr);
业绩 业绩业绩 业绩业绩
今天(2019-12-09),我为选定的解决方案对macOS v10.13.6(高塞拉利昂)进行性能测试。我表示删除(A),但与其他方法相比,我没有使用,因为它在阵列中留下了空位。
结 结 结 结 结 结 结
最快的溶液是阵列。 splice (C) (对于大阵列、 阵列、 slice+splice (H) 是 Firefox 和 Safari 最快的不可改变的溶液 。 来自 (B) 的 Array. forest in Chrome mable 溶液通常比位于Safari 的小型表格的不可移动的快1.5x-6x, 令人惊讶的是, 变式溶(C) 慢于不可改变的溶液 (G) 。
详细细节
在测试中,我以不同的方式将中间元素从数组中去除。 A, C 的解决方案就位。 B, D, E, F, G, H 的解决方案是不可改变的 。
包含 10 元素的阵列结果
调
在铬中, 数组. spice (C) 是本地最快的解决方案。 数组. filter (D) 是最快的不可变的解决方案。 最慢的就是数组. sice (F)。 您可以在这里对您的机器进行测试 。
带有 1 000 000 元素的阵列结果
调
在铬中, 数组. spice (C) 是本地最快的解决方案( 删除( C) 的速率相似) - 但是在数组中留下了一个空位( 所以它不会执行“ 完全移除 ” ) 。 数组. sice- splice (H) 是最快的不可改变的解决方案。 最慢的就是数组. filter (D和E) 。 您可以在这里对您的机器进行测试 。
[var a = [0, 1, 2, 3, 4, 5, 6, 7, 9];var log = (letter, array) {(letter, trara.) log.log (leg. join `, `); 函数 A(arry) {var = trares[index]; {var (arr) {var = Array.(ar) 5; var. spice (al) = (aly) log (b) ; {var.log (ar) = listal. g(ary) = listal(5); trace. sloa. (var) log (var) = a. (l) a. (l) ; (var) lix (l) a. (l) a. (l) a. (l) ; (l) a. (l) a. (l) a. (l) a. (l) ex. (l) ex. (l) a. (l) a. (l) a. (l) a. (l) a. (l) a.
浏览器比较:Chrome v78.0.0,Safari v.13.0.4和Firefox v71.0.0
调
我找到了这个博客文章,
9 从 JavaScript 阵列中删除元素的方法 - 附加如何安全清除 JavaScript 阵列
我更喜欢使用过滤器 () :
var filtered_arr = arr.filter(function(ele){
return ele != value;
})
创建新阵列 :
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);
为了删除某一元素或随后的元素,Array.splice () 方法效果良好。
组合法通过删除或替换现有元素和(或)添加新元素来改变数组的内容,并返回被删除的项目。
group: group. spice( index, deleteCount, items 1,... ., items X) 。
这里的索引是强制性的,休息参数是可选的。
例如:
let arr = [1, 2, 3, 4, 5, 6];
arr.splice(2,1);
console.log(arr);
// [1, 2, 4, 5, 6]
注:如果您知道要删除的元素的索引,可以使用 Array.splice () 方法。但是,我们可能有以下几个例子:
如果您想要删除仅最后一个元素, 您可以使用 rryal.pop () {如果您想要删除仅第一个元素, 您可以使用 rray. stop () 如果您只知道该元素, 但不是该元素的位置( 或索引) , 并且想要删除使用 arra. filter () 方法的所有匹配元素 : 让 arrr = [1、2、 1、 3、4、 1、 5、 1 ; 让新 Arr = arr. fell( ) (职能) { 返回 val! = = 1; = fal; 1; (val) { = a. (val) { = a. (val) { = 3; (ll) { = a. (rr) 11; (rr) { {r. relicl(i) { = a. (l) ; free. (l) a. (l) a. (l) ; (l) a. (l) ; (l) a. (l) a. (l) ; (l) a. (l) a. (l) ; (l) a; (l) a; (l) a; (l) a; (l) a; (l) ) a; (l) a; (l) a; (l) a; (l) a; (l) a; (l) a; (l) a; (l) a; (l) a; (l) a; (l) a; (l) ; (l) a; (l)