繁体   English   中英

在javascript中从数组中删除元素的最佳方法?

[英]Best way to remove elements from arrays in javascript?

在处理大型数组时,你想要从数组中过滤掉元素,就性能而言,创建一个新数组并将其推送到那个新数组中,或者手动删除元素是否更好?使用类似这样的东西的现有数组删除JavaScript中的数组元素 - 删除vs splice

有人知道吗?

谢谢

创建一个新阵列并推动消耗更多时间和内存。 但删除不会花费太多时间和空闲记忆。
如果你创建一个新数组并推送,它必须比较每个元素然后推送。
如果删除,则只需进行比较和删除。
第二种选择有利于提高性能

您可以使用splice()从数组中删除项目。 考虑下面的例子,如果要删除索引为2的项目3 ,可以使用拼接(位置,范围)

var a = [1,2,3,4,5,6,7];
a.splice(2,1);
console.log(a);

这将输出

[1, 2, 4, 5, 6, 7]

答案应该能够通过使用不同的数组方法或其他方法运行测试而无需推测地确定。

 var arr = Array(7); var r = 3; console.time(".splice()"); arr.splice(r, 1); // try different methods here console.timeEnd(".splice()"); var arr = Array(7); console.time(".filter()"); arr = arr.filter(function(_, i) { // try different methods here return i !== r }); console.timeEnd(".filter()"); 

 var arr = Array(1000); var r = 500; console.time(".splice()"); arr.splice(r, 1); console.timeEnd(".splice()"); var arr = Array(1000); console.time(".filter()"); arr = arr.filter(function(_, i) { return i !== r }); console.timeEnd(".filter()"); 

 var arr = Array(100000); var r = 50000; console.time(".splice()"); arr.splice(r, 1); console.timeEnd(".splice()"); var arr = Array(100000); console.time(".filter()"); arr = arr.filter(function(_, i) { return i !== r }); console.timeEnd(".filter()"); 

您可以使用splice方法修改数组的内容。 如果要添加元素使用 -

arrayName.splice(index,range,element);

如果要删除元素,请使用 -

arrayName.splice(index,deleteCount);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM