从Array()中间删除一个条目的最快方法

Tom*_*Tom 21 apache-flex flex3 actionscript-3

从Array()中间删除一个特定条目的最快方法是什么?

数组很大,有字符串.

我不想只设置Array [5] = null,而是将数组大小减少一个,而array [5]应该包含数组[6]的内容等.

kky*_*kyy 51

没有任何基准来支持这一点,但人们会认为原生的Array.splice方法是最快的......

因此,要删除索引5处的条目:

array.splice(5, 1);
Run Code Online (Sandbox Code Playgroud)

  • 还要记住,除非你向后运行,否则在运行它时删除数组中间的东西会造成严重破坏. (3认同)
  • 对于任何关心被删除的特定条目的值的人,请记住`splice`返回一个数组,所以你需要`array.splice(5,1)[0];` (3认同)
  • 请注意,这也适用于JavaScript. (2认同)

Jes*_*sak 25

如果你不关心项目的排列顺序(只是想让它变得更短1),你可以在阵列的最后一个元素复制到索引中删除,然后弹出最后一个元素了.

array[index] = array[array.length-1];
array.pop();
Run Code Online (Sandbox Code Playgroud)

如果你能够重新排序数组,我猜这会更快,CPU时间更快.

编辑:您应该根据具体情况进行基准测试; 我最近这样做了,拼接更快.(大概是因为Chrome实际上并没有将数组存储为单个连续缓冲区.)

  • 这真是太聪明了。比 splice 快得可笑:http://jsperf.com/remove-element-splice-vs-move-and-pop (3认同)

has*_*seg 5

Array.splice() “向数组添加元素和从数组中删除元素”

myArr.splice(indexToRemove, 1); // only removing one index, thus the 1
Run Code Online (Sandbox Code Playgroud)