Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中使用整型键初始化静态值的hashmap?_Javascript_Map_Integer_Initialization_Key - Fatal编程技术网

如何在Javascript中使用整型键初始化静态值的hashmap?

如何在Javascript中使用整型键初始化静态值的hashmap?,javascript,map,integer,initialization,key,Javascript,Map,Integer,Initialization,Key,在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"

在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"];
...
var xxx = [];
xxx.push(["a1","a2","a3"],["b1","b2","b3"],["c1","c2","c3"],...);
但问题是它会使初始化代码变长。我需要从中挤出所有的字节,因为我需要在用户端推送这个对象,并计算所有保存的字节数

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

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

xxx[0]=["a1","a2","a3"];
xxx[1]=["b1","b2","b3"];
xxx[2]=["c1","c2","c3"];
...
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”

为什么不使用
var xxx={0:[“a1”、“a2”、“a3”],…}
,即你的第二个例子?数字文字是对象文字中的有效属性名称。看,我认为不能用整数作为映射键。也许我错了……好吧,你可以;)无论如何,每个属性名称都会转换为字符串。也就是说,
{0:'foo'}
{0:'foo'}
相同。毕竟,数组也是对象。数组的元素只是具有数字名称的属性。但无论如何,使用数组可能更有意义。对于记录,我创建了一个Small JSFIDLE来测试这个概念: