如何在Javascript中初始化带有整数键的静态值哈希映射

How to initialize a hashmap of static values with integer keys in Javascript?

本文关键字:静态 映射 哈希 整数 Javascript 初始化      更新时间:2023-09-26

初始化具有字符串键的映射可以在Javascript中执行如下操作:

var xxx = {
    "aaa" : ["a1","a2","a3"],
    "bbb" : ["b1","b2","b3"],
    "ccc" : ["c1","c2","c3"],
    ...
};

我需要用整数键初始化一些映射,比如:

var xxx = {
    0 : ["a1","a2","a3"],
    1 : ["b1","b2","b3"],
    2 : ["c1","c2","c3"],
    ...
};

当然,我可以使用这样的数组:

xxx[0]=["a1","a2","a3"];
xxx[1]=["b1","b2","b3"];
xxx[2]=["c1","c2","c3"];
...

但问题是它使得初始化代码很长。我需要从中挤出我能压缩的所有字节,因为我需要在用户端推送这个对象和任何保存的字节计数。

xxx对象需要用n个数组初始化,并且每个条目都有一个在0和n-1之间的唯一关联id。因此,在我可以使用的id和数组之间有一个一对一的映射,这些id从0到n-1是连续的,这让我认为我可以使用数组而不是Javascript的"映射"。

我注意到,可以将对象推入数组。也许我可以用这样的东西:

var xxx = [];
xxx.push(["a1","a2","a3"],["b1","b2","b3"],["c1","c2","c3"],...);

这是实现我的目标的合适方式吗?还是Javascript中有更聪明的东西?谢谢

p.S.:稍后,xxx将被xxx[2]xxx[10]等引用…

这让我觉得比使用字符串或整数键更干净,除非你需要在xxx:上添加额外的属性

var xxx = [
    ["a1","a2","a3"],
    ["b1","b2","b3"],
    ["c1","c2","c3"]
    //...
];

只需将xxx制作成一个包含数组的数组即可。您可以通过xxx[1][2](因为xxx[1] == ["b1", "b2", "b3"])到达,比如说"b3"。