尝试将字符串转换为数字,除了数字为零时返回空字符串之外,效果还不错;
我知道0是错误的,但我只需要一种整洁的方式即可返回字符串“ 0”
我正在使用:
const num = this.str ? this.str.toString() : '' ;
我什至考虑使用es6并仅使用${this.str}
,但这没用
答案 0 :(得分:3)
因为您已经知道0在JavaScript中为“ false-y”,所以您不能在有条件的情况下使用它。相反,请问自己 确实 要解决的条件是什么。
您是否担心null / undefined值?也许这样更好:
const num = (typeof this.str !== "undefined" && this.str !== null) ? this.str.toString() : "";
奇怪的是,您真的只关心this.str
是 Number
,并且在所有其他情况下都希望忽略它。如果this.str
是Date
或Array
怎么办? Date
和Array
都具有.toString()
方法,这意味着如果一个函数意外插入功能,您可能会出现一些奇怪的错误。
因此,更好的解决方案可能是:
const num = (typeof this.str === "number") ? this.str.toString() : "";
答案 1 :(得分:1)
您还可以将代码放入try catch块中
const num = ''
try {
num = this.str.toString();
} catch(e) {
// Do something here if you want.
}
答案 2 :(得分:1)
只需添加给定答案-如果您这样做:
x >> 0
您会将anything
转换为Number
'7' >> 0 // 7
'' >> 0 // 0
true >> 0 // 1
[7] >> 0 // 7
这是右移位运算。您可以在许多现实生活中用这种方法做魔术,如this article中所述。
答案 3 :(得分:0)
在我的情况下,我想转换为字符串的零(数字)(这是select元素中选项的值)是枚举中的值。
所以我这样做了,因为枚举是由另一个进程生成的,我无法更改它:
let stringValue = '';
if (this.input.enumValue === 0) {
stringValue = '0';
} else {
stringValue = this.input.enumValue.toString();
}