Javascript 在ES6中创建以数字作为索引的hashmap的最佳方法

Javascript 在ES6中创建以数字作为索引的hashmap的最佳方法,javascript,ecmascript-6,Javascript,Ecmascript 6,我想构建一个hashmap类,或者使用该语言附带的类 索引是整数。 如果我尝试对数组执行此操作,我会在调试器上看到数组的大小等于更高的整数键 也就是说,如果我的hashmap有两个元素,Map[0]='word1'和Map[1023]='word2'我可以看到数组大小为1024。 我不想浪费这么多空间 我无法对密钥的分布方式做出任何假设。ECMAScript 6引入了一个真正的类型,可按如下方式使用: const m = new Map(); m.set(0, "word1"); m.set(1

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

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

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


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

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

const m = new Map();
m.set(0, "word1");
m.set(1023, "word2");
for(const [key, value] of m) {
    console.log(key, value, typeof key);
}
请注意,
key
仍然是一个数字-使用对象文字,键始终是字符串。它还提供用于计算键/值对的
size
属性:

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

var blah={}
(不要使用
var-Map
…Map是浏览器中的一种,除了早期的互联网爆炸<11)不,大小仍然是1023。你做错了。js对象没有“我不想浪费这么多空间”的长度。JavaScript中的数组与其他语言中的数组工作方式不同。它们基本上只是物体。长度为
1000的数组不一定占用那么多空间。正确,但您没有利用新的ES6浏览器实现。数组可能是通过链表和hashmap实现的,但我们无法控制预先分配的大小。