Javascript 访问给定索引的映射键/值的最快方法

Javascript 访问给定索引的映射键/值的最快方法,javascript,node.js,Javascript,Node.js,假设我生成一个随机索引,如下所示: const m = new Map(); const r = Math.floor(Math.random()*m.size); 现在我需要使用indexr获取密钥 这真的是获得钥匙k的最快方法吗 let i = 0; for(var k of m.keys()){ if(i === r) { break; } i++; } // k is now our randomly selected key 你可以这样做: const

假设我生成一个随机索引,如下所示:

const m = new Map();
const r = Math.floor(Math.random()*m.size);
现在我需要使用index
r
获取密钥

这真的是获得钥匙k的最快方法吗

let i = 0;
for(var k of m.keys()){
   if(i === r) {
      break;
    }
  i++;
}
// k is now our randomly selected key

你可以这样做:

const key = [...m.keys()][r];
这将为您节省一些代码行,但从性能角度看,这可能会更慢


事实上,JSPerf.com上的这一点似乎表明您的版本要快得多(至少在当前的Chrome和Firefox上是如此)。

Array.of(m.keys())[i]
?我想代码更少了,不确定是否更有效,您可以将密钥集合转换为数组一次(如果集合没有更改),然后按索引访问密钥。对不起,我不太清楚你在问什么。您是在尝试查找给定键的索引,还是在尝试从映射中获取随机值?最快的方法是保留一个键数组,这样您就可以使用index->key->value