使用 V8 从密集数组中删除元素的最佳方法是什么

What is the best way to remove an element from a dense array with V8?

本文关键字:元素 最佳 方法 是什么 删除 V8 数组 使用      更新时间:2023-09-26

Google V8引擎对密集和稀疏数组有不同的内部表示。当数组从密集变为稀疏时,它会导致字典模式启动,这要慢得多。

我似乎无法弄清楚从密集数组中的某个位置删除元素以避免进入稀疏数组的最有效(最快(方法是什么。

用例非常简单。从数组[8, 6, 1]开始,然后删除元素6转到[8, 1]

如果只删除一个元素,如果元素位于数组的开头,则shift()最快,当元素位于数组末尾时pop()最快,如果元素位于中间的某个位置,则spliceOne通常最快。

您正在寻找删除或替换数组部分的splice方法。在您的情况下:

var arr = [8, 6, 1];
arr.splice(1, 1); // at pos 1 remove 1 element, yields [6]
arr; // [8, 1]