如果数字为0,则将数字转换为字符串将返回空

时间:2019-05-08 19:54:04

标签: javascript

尝试将字符串转换为数字,除了数字为零时返回空字符串之外,效果还不错;

我知道0是错误的,但我只需要一种整洁的方式即可返回字符串“ 0”

我正在使用:

const num = this.str ? this.str.toString() : '' ;

我什至考虑使用es6并仅使用${this.str},但这没用

4 个答案:

答案 0 :(得分:3)

因为您已经知道0在JavaScript中为“ false-y”,所以您不能在有条件的情况下使用它。相反,请问自己 确实 要解决的条件是什么。

您是否担心null / undefined值?也许这样更好:

const num = (typeof this.str !== "undefined" && this.str !== null) ? this.str.toString() : "";

奇怪的是,您真的只关心this.str Number ,并且在所有其他情况下都希望忽略它。如果this.strDateArray怎么办? DateArray都具有.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();
  }