【问题标题】:How to convert an item in a 2D array to a number如何将二维数组中的项目转换为数字
【发布时间】:2020-03-03 12:59:21
【问题描述】:

我在尝试获取数组中的价格时遇到了问题

这是我正在处理的数组

[ [ 'bento box b - sashimi', 'box combo', '$9.59' ],
  [ 'bento box a - chicken teriyaki', 'box combo', '$8.59' ] ]

我知道 '$9.59' 这是字符串,我试试

for (item of lunch) {
      let newPrice = parseInt(item[2] *1.8)
        console.log(newPrice)


    }

当我运行它时它会返回 NaN

我知道 '$9.59' 这是字符串,我试试

    for (item of lunch) {
          let newPrice = parseInt(item[2] *1.8)
            console.log(newPrice)


        }

当我运行它时它会返回 NaN

我需要将每个数组中的价格乘以 1.8,但它总是给我 NaN,我该如何解决?

【问题讨论】:

  • 考虑格式化问题,让代码在代码块中,而不是代码不在代码块中,最后不要重复自己,这很烦人
  • 它一直告诉我需要添加一些细节
  • 因为你把所有东西都写成了代码——除非是代码,否则不要缩进文本
  • parseInt('$9.59') - 导致NaN ... 因为$ ... 而parseInt 无论如何都会删除.59 ... 你想要parseFloat(item[2].slice(1)) * 1.8 - 注意() 的位置不包括 * 1.8,因为这不需要解析
  • 还有,为什么标签垃圾邮件...这既不是asynchronous,也与promise无关

标签: javascript node.js


【解决方案1】:

这里存在三个问题(除了格式不好):

  1. 您正在执行parseInt() 调用的乘法inside。这意味着解释器将首先执行 item[2] * 1.8(其结果是 NaN,因为字符串无法转换为数字),然后将该 NaN 结果传递给 parseInt(),这又给出了 NaN。

  2. 您尝试使用parseInt() 的字符串包含美元符号$,因此无论如何解析都会失败。在使用 String.slice() 或 String.replace() 等函数进行解析之前,您需要去掉美元符号。

  3. 您尝试解析的字符串不是整数。整数是整数,没有小数位。请改用parseFloat()

【讨论】:

    猜你喜欢
    • 2021-01-28
    • 2019-01-23
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2019-07-09
    • 2015-07-16
    • 1970-01-01
    相关资源
    最近更新 更多