带有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";