Javascript 在JS映射对象的指定位置插入键值对(类似于Array';s.splice())

Javascript 在JS映射对象的指定位置插入键值对(类似于Array';s.splice()),javascript,arrays,node.js,data-structures,Javascript,Arrays,Node.js,Data Structures,有没有一种方法可以高效地在地图对象的特定位置插入键值对 我试图解决的问题是按一定顺序存储两个成对的值(一个是绝对浮点“索引”,范围从0.00到9675.75,另一个是与该“索引”关联的浮点值)。本质上,我想“重新关联”每个绝对“索引”到一个抽象的[0,1,2,3,…]索引,而不丢失所说的绝对“索引”。截至目前,我已尝试了以下方法: 规则数组。我曾尝试将浮点“索引”转换为整数,以便它们可以用作数组的索引,但这实际上会创建一个所谓的“多孔数组”,在我的用例中,它的效率非常低,速度也非常慢。我尝试使

有没有一种方法可以高效地在地图对象的特定位置插入键值对

我试图解决的问题是按一定顺序存储两个成对的值(一个是绝对浮点“索引”,范围从0.00到9675.75,另一个是与该“索引”关联的浮点值)。本质上,我想“重新关联”每个绝对“索引”到一个抽象的
[0,1,2,3,…]
索引,而不丢失所说的绝对“索引”。截至目前,我已尝试了以下方法:

  • 规则数组。我曾尝试将浮点“索引”转换为整数,以便它们可以用作数组的索引,但这实际上会创建一个所谓的“多孔数组”,在我的用例中,它的效率非常低,速度也非常慢。我尝试使用数组的另一件事是创建一个2d数组,其中每个元素存储一个子数组,子数组的第一个元素是“index”,第二个元素是value。然而,这个解决方案也是次优的,因为我需要通过
    .findIndex(I=>I[0]==abs\u index\u I\u search\u for)找到一个包含绝对索引的索引,这也太慢了
  • 类型化数组。对于我的问题,它将是一个完美的匹配,但是,唉,它缺少急需的
    .splice()
  • 反对。同样,它是一种完全有效的数据类型,但没有顺序的概念,因此也没有处理它的方法

在谷歌搜索了一下之后,我找到了一个适合我的目的的东西。它可以存储键(在我的例子中是绝对的“索引”),值,最重要的是,按插入顺序保存它们!然而,由于某种原因,我找不到直接使用映射顺序的任何信息,这很奇怪,因为我完全能够找到第一个键值对,这意味着顺序不仅正确,而且可以访问。我遗漏了什么吗?

没有。地图也不意味着是有序的集合。为此使用数组。在数组中,应该使用二进制搜索而不是
findIndex
@Bergi换句话说,没有实际可行的方法将贴图用作序列?因为我似乎找不到有效使用数组的方法,因为我的绝对“索引”序列虽然按升序数字顺序排序,但可能包含漏洞(即具有0值的索引,我会自动删除)。
Map
是一个键值查找结构,而不是一个可以操作的序列。当然,您可以始终将数组用于映射的键序列。@Bergi谢谢!你给了我一个极好的主意。地图也不是一个有序的集合。为此使用数组。在数组中,应该使用二进制搜索而不是
findIndex
@Bergi换句话说,没有实际可行的方法将贴图用作序列?因为我似乎找不到有效使用数组的方法,因为我的绝对“索引”序列虽然按升序数字顺序排序,但可能包含漏洞(即具有0值的索引,我会自动删除)。
Map
是一个键值查找结构,而不是一个可以操作的序列。当然,您可以始终将数组用于映射的键序列。@Bergi谢谢!你给了我一个好主意