Javascript对象与通过键落

时间:2016-02-03 13:52:42

标签: javascript angularjs

我对这种情况感兴趣,涉及角度过滤器。

我有一个从我的数据库返回的列是一个布尔值,我想从我的角度过滤器返回基于该值。简单:

function importExportFilter() {
    return function (value) {
        var conversion = {
            "true": "Import",
            "false": "Export"
        };

        return allowable[value];
    }
}

这很简单,但它并不处理价值不是我们转换字典中的密钥的情况。

处理它的两种方法:

if (conversion.hasOwnProperty(value)) {
    return conversion[value];
}

return "Unknown";

OR:

return conversion[value] === undefined ? "Unknown" : conversion[value];

有没有办法修改javascript对象基本上允许这个:

var conversion = {
    "true": "Import",
    "false": "Export",
    "*": "Unknown"
};

其中"*"只是一个通配符。它不是一个特殊的情况,它有一个未知的值,所以只要没有实际价值就可以使用Unknown

我似乎无法想到任何其他有趣的方法来做到这一点。显然,在商业环境中,我总是采用第一种方式处理意外情况。

然而,如果有任何其他有趣的解决方案可以解决这个问题,那么我从创意方面感到疑惑?

2 个答案:

答案 0 :(得分:3)

您可以使用logical or ||

如果值为真,则取第一个值,否则为第二个值。

return conversion[value] || 'Unknown';

或其他技术:

var conversion = {
    true: "Import",
    false: "Export",
    unknown: "Unknown"
};

return conversion[x] || conversion.unknown;

答案 1 :(得分:0)

您要求的不是JavaScript的功能。

但你总是可以写:

return conversion[value] || "Unknown";

这与其他语言(如C#)中的null coalesce运算符类似(但不完全相同),但这通常是如何在JS中指定默认/替代值的。