Javascript Map.set 位置

2023-12-01

有什么方法可以在现有键之前或之后将新元素插入到 Map 中吗? 至于数组将是:arr.splice(<POSITION>, 0, <NEW ELEMENT>);

Thanks!


一般理论

A Map与数组不同,它没有“顺序”的语义。

它被设计为最有效地存储和检索特定键的值。 (事实上​​,它的内部实现做了一些专门为此优化的结构/排序,“b-tree”是这里的关键词。

JavaScript 实现

尽管如此,Mozilla 文档说:

Map 对象按插入顺序迭代其元素 - for...of 循环为每次迭代返回一个 [key, value] 数组。

update:官方 ECMA-262 标准证实了这一点.

就我个人而言,我猜测实现者将为输入顺序保留一个单独的索引and用于最有效的单一访问的 B 树。

基于此,您要做的基本上就是将地图视为不可变对象,并从中创建一个新对象:

  1. 迭代先前的地图
  2. 将每个元素添加到新地图中。 – 当合适的时间到来时,插入your元素。 – 继续迭代剩下的部分
  3. 将新元素分配给旧元素的名称。

我现在不知道你的具体用例,但也许你的问题也可以通过以下方式解决对特定标准进行排序迭代就在迭代它时。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript Map.set 位置 的相关文章