具有默认值的Javascript数组(相当于Python的defaultdict)? [英] Javascript array with default values (equivalent of Python's defaultdict)?

查看:123
本文介绍了具有默认值的Javascript数组(相当于Python的defaultdict)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


可能重复:

在阅读之前设置未定义的javascript属性

是否有相当于Javascript中的 Python的默认指令?这将是一个Javascript数组,其中为缺少的键返回的值是可定义的。类似于:

Is there an equivalent of Python's defaultdict in Javascript? This would be a Javascript array where the value returned for a missing key is definable. Something like:

var a = defaultArray("0");
console.log(a['dog']);
// would print 0

如果没有,你会如何实现它?

If not, how would you implement it?

推荐答案

不,这在JavaScript中是不可能的。顺便说一下,你当然是指 Objects (property-value-maps)而不是数组。两个解决方案:

No, this is not possible in JavaScript. Btw, you certainly meant Objects (property-value-maps) instead of arrays. Two solutions:

使用带有字符串参数的getter函数而不是对象属性。该函数可以在内部字典对象中查找输入键,并以编程方式处理未命中 - 例如动态创建值或返回默认值。

Use a getter function with a string parameter instead of object properties. That function can look up the input key in an internal "dictionary" object, and handle misses programmatically - e.g. creating values dynamically or returning default values.

当然,您可以为此类getter函数构建工厂。

Of course you could build a factory for such getter functions.

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

这篇关于具有默认值的Javascript数组(相当于Python的defaultdict)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆