Javascript中是否有相当于Python的defaultdict ?这将是一个 Javascript 数组,其中为缺少的键返回的值是可定义的。就像是:
var a = defaultArray("0");
console.log(a['dog']);
// would print 0
如果没有,您将如何实施?
Javascript中是否有相当于Python的defaultdict ?这将是一个 Javascript 数组,其中为缺少的键返回的值是可定义的。就像是:
var a = defaultArray("0");
console.log(a['dog']);
// would print 0
如果没有,您将如何实施?
不,这在 JavaScript 中是不可能的。顺便说一句,您当然是指对象(属性值映射)而不是数组。两种解决方案:
将您的对象实现为 a Proxy
,它旨在完全按照您的意愿行事。然而,它只是一个草稿,目前仅在 Firefox 的 Javascript 1.8.5 中支持。
使用带有字符串参数而不是对象属性的 getter 函数。该函数可以在内部“字典”对象中查找输入键,并以编程方式处理未命中 - 例如动态创建值或返回默认值。
当然,您可以为此类 getter 函数构建工厂。
function defaultDict(map, default) {
return function(key) {
if (key in map)
return map[key];
if (typeof default == "function")
return default(key);
return default;
};
}
var a = defaultDict({cat: 1}, 0);
console.log(a('cat')); // 1
console.log(a('dog')); // 0