Javascript 映射默认值

Javascript 映射默认值,javascript,arrays,dictionary,default-value,Javascript,Arrays,Dictionary,Default Value,我正在寻找类似于地图默认值的东西 m = new Map(); //m.setDefVal([]); -- how to write this line??? console.log(m[whatever]); 现在结果未定义,但我想得到空数组[]。首先回答关于标准Map的问题:ECMAScript 2015中提出的JavascriptMap不包括默认值的设置器。然而,这并不妨碍您自己实现该函数 如果您只想打印一个列表,每当m[where]未定义时,您可以: console.log(m.get

我正在寻找类似于地图默认值的东西

m = new Map();
//m.setDefVal([]); -- how to write this line???
console.log(m[whatever]);

现在结果未定义,但我想得到空数组[]。

首先回答关于标准
Map
的问题:ECMAScript 2015中提出的Javascript
Map
不包括默认值的设置器。然而,这并不妨碍您自己实现该函数

如果您只想打印一个列表,每当m[where]未定义时,您可以:
console.log(m.get('whatever')| |[])
正如Li357在评论中指出的那样

如果您想重用此功能,还可以将其封装到如下函数中:

函数getMapValue(映射,键){ 返回地图。获取(键)| |[]; } //然后像这样使用它: 常数m=新映射();
log(getMapValue(m,'whatever')
空数组是空的,因此在索引
[0]
m[whatever]| |[]
中没有元素。我相信您应该支持
映射
构造函数已经需要的内容,不是吗?在类实现中,您传递一个新对象并将其用作引用,因此每次使用m.get时我们都返回相同的对象。我认为您应该使用defaultValue作为返回数组新实例的函数。
get
的另一种实现是使用
if(!this.get(key)this.set(key,this.default());
。这将允许像
m.get('key').push(newValue)这样方便的单行程序
,代价是让
get
方法变异对象,这有点尴尬