【问题标题】:convert variable float, integer or left as string directly - Javascript将变量浮点数、整数或直接转换为字符串 - Javascript
【发布时间】:2020-04-15 14:37:22
【问题描述】:

我想转换一个字符串变量如下:

  • 变量字符串是浮点数-> 转换为浮点数
  • 否则字符串是整数-> 转换为整数
  • 否则返回字符串

这是我目前尝试的:

function parse(x){
    return x==parseFloat(x)?parseFloat(x):
           x==parseInt(x)?parseInt(x):
           x
}

console.log(typeof parse("11.5"),parse("11.5"))
console.log(typeof parse("11"),parse("11"))
console.log(typeof parse("11.5A"),parse("11.5A"))

如果存在更有效和更直接的方法来执行此操作,我正在寻找解决方案。

【问题讨论】:

  • 更直接?不。(尽管parseFloat 也应该足以解析整数)。更高效?不要调用parseFloatparseInt 两次,而是将结果存储在一个临时变量中。
  • 答案不像我在问题中的尝试那样直接。最好是人们从我的尝试中尝试一些东西。这就是我发布这个问题的原因。

标签: javascript


【解决方案1】:

const parse = x => !isNaN(x) ? Number(x) : x

console.log(parse(1), typeof parse(1))
console.log(parse(1.5), typeof parse(1.5))
console.log(parse('1'), typeof parse('1'))
console.log(parse('1A'), typeof parse('1A'))
console.log(parse(0), typeof parse(0))
console.log(parse('0'), typeof parse('0'))

【讨论】:

  • @Bergi 很好看。固定。
【解决方案2】:

我发现这样更有效率:

function parse(x){
  return x==x*1?x*1:x
 }

function parse(x){
      return x==x*1?x*1:x
 }
console.log(typeof parse("11.5"),parse("11.5"))
console.log(typeof parse("11"),parse("11"))
console.log(typeof parse("11.5A"),parse("11.5A"))

【讨论】:

    猜你喜欢
    • 2016-02-06
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多