在数字中使用数字作为索引创建散列映射的最佳方法

Sni*_*ick 3 javascript ecmascript-6

我想构建一个hashmap类,或者使用该语言附带的类.

索引是整数.如果我尝试使用数组执行此操作,我会在调试器上看到,而不是数组的大小等于更高的整数键.

也就是说,如果我的HashMap具有两个元素, Map[0]= 'word1'并且Map[1023]= 'word2'我可以看到数组的大小为1024.我不想浪费这么大的空间.

我无法对密钥的分配方式做出任何假设.

Cod*_*gue 18

ECMAScript 6引入了一个真正的Map类型,可以按如下方式使用:

const m = new Map();
m.set(0, "word1");
m.set(1023, "word2");
for(const [key, value] of m) {
    console.log(key, value, typeof key);
}
Run Code Online (Sandbox Code Playgroud)

注意如何key仍然是一个数字 - 使用对象文字,键总是字符串.它还提供了size计算键/值对的属性:

const m = new Map();
m.set(0, "word1");
m.set(1023, "word2");
console.log(m.size); // 2
Run Code Online (Sandbox Code Playgroud)

Babel REPL示例