我对这种情况感兴趣,涉及角度过滤器。
我有一个从我的数据库返回的列是一个布尔值,我想从我的角度过滤器返回基于该值。简单:
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
。
我似乎无法想到任何其他有趣的方法来做到这一点。显然,在商业环境中,我总是采用第一种方式处理意外情况。
然而,如果有任何其他有趣的解决方案可以解决这个问题,那么我从创意方面感到疑惑?
答案 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中指定默认/替代值的。