Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.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
带有fall-through键的Javascript对象_Javascript_Angularjs - Fatal编程技术网

带有fall-through键的Javascript对象

带有fall-through键的Javascript对象,javascript,angularjs,Javascript,Angularjs,我对这个场景感兴趣,它涉及一个角度过滤器 我有一个从数据库返回的列,它是一个布尔值,我想根据这个值从角度过滤器返回。简单: function importExportFilter() { return function (value) { var conversion = { "true": "Import", "false": "Export" }; return allowable[va

我对这个场景感兴趣,它涉及一个角度过滤器

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

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

        return allowable[value];
    }
}
这很好也很简单,但是它不处理值不是转换字典中的键的情况

有两种处理方法:

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

return "Unknown";
或:

有没有一种方法可以修改javascript对象以基本上允许这样做:

var conversion = {
    "true": "Import",
    "false": "Export",
    "*": "Unknown"
};
其中,
“*”
只是一个通配符。有未知值的情况并非例外,因此只要没有实际值,就可以使用
unknown

我似乎想不出任何其他有趣的方法来做这件事。很明显,在商业环境中,我总是采用第一种方法来处理意外情况

然而,我从一个创造性的角度想知道,这个问题是否还有其他有趣的解决方案?

您可以使用
|

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

return conversion[value] || 'Unknown';
或其他技术:

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

return conversion[x] || conversion.unknown;

你所要求的不是JavaScript的一个特性

但你总是可以写:

return conversion[value] || "Unknown";

这与其他语言(如C#)中的null coalesce操作符类似(但严格来说并不相同),但这通常是在JS中分配默认值/可选值的方式

您可以使用一系列策略,并使用筛选器来获取第一个可以处理特定
状态的策略。完全忘记了这一点!是的,很简单,我喜欢C语言中的附加功能,我会将字典包装起来,并在包装实现上放置索引器,但正如你所说,在这样做的过程中,javascript没有这种功能
return conversion[value] || "Unknown";