Number() 用于字符串 returns Nan
Number() when used on a string returns Nan
这是我正在处理的代码:
app.put("/transaction/:value/:id1/:id2", async(req,res) => {
try {
const {value,id1,id2} = req.params;
const bal1 = await pool.query("Select balance from balance where id=",[id1]);
const bal2 = await pool.query("Select balance from balance where id=",[id2]);
const ball1 = JSON.stringify(bal1.rows[0].balance);
const ball2 = JSON.stringify(bal2.rows[0].balance);
const convball1 = Number(ball1);
console.log(convball1);
这是我正在尝试进行的 PERN 项目,我需要将 convball1 值作为 int 来进一步测试条件,但我无法将其作为 int 使用。
从数据库中检索 bal1 值时,结果如下:[{"balance":"50"}]
这就是为什么要在 ball1 处进行清理。但是 ball1 的值显示为 "50"
.
需要ball1有整数
更新:
我如上所述使用 parseInt() 而不是 Number(),但我得到了同样的错误。因此,我检查了 MDN 网络文档中的 parseInt() 函数,他们提到使用另一个名为 radix 的参数。
因此,基数为 10 会将十进制数转换为 int 格式,但我不确定我是否做对了。
得到同样的错误
使用 + 号就是这样,将字符串转换为数字
const convball1 = +ball1;
您提到您得到 [{"balance":"50"}]
作为输出;
当我这样做时 [{"balance":"50"}][0].balance
我会得到“50”,Number("50")
会给我 50。
您正在做的 JSON.stringify([{"balance":"50"}][0].balance)
将导致“50”,而 Number(“50”) 将是 Nan
避免 JSON.stringify
你会很好。
输出结果为 JSON,所以我的建议是使用 JSON.parse() 将其解析为一个对象。
这是一个例子:
const ball1 = JSON.parse('[{"balance":"50"}]');
console.log(parseInt(ball1[0].balance));
您的方法不起作用的原因是因为您尝试使用 Number() 解析无效数字,它无效是因为它在字符串中包含字母和特殊字符,例如“balance”和“[]”字符, 所以它当然会 return NaN.
这是我正在处理的代码:
app.put("/transaction/:value/:id1/:id2", async(req,res) => {
try {
const {value,id1,id2} = req.params;
const bal1 = await pool.query("Select balance from balance where id=",[id1]);
const bal2 = await pool.query("Select balance from balance where id=",[id2]);
const ball1 = JSON.stringify(bal1.rows[0].balance);
const ball2 = JSON.stringify(bal2.rows[0].balance);
const convball1 = Number(ball1);
console.log(convball1);
这是我正在尝试进行的 PERN 项目,我需要将 convball1 值作为 int 来进一步测试条件,但我无法将其作为 int 使用。
从数据库中检索 bal1 值时,结果如下:[{"balance":"50"}]
这就是为什么要在 ball1 处进行清理。但是 ball1 的值显示为 "50"
.
需要ball1有整数
更新: 我如上所述使用 parseInt() 而不是 Number(),但我得到了同样的错误。因此,我检查了 MDN 网络文档中的 parseInt() 函数,他们提到使用另一个名为 radix 的参数。
因此,基数为 10 会将十进制数转换为 int 格式,但我不确定我是否做对了。 得到同样的错误
使用 + 号就是这样,将字符串转换为数字
const convball1 = +ball1;
您提到您得到 [{"balance":"50"}]
作为输出;
当我这样做时 [{"balance":"50"}][0].balance
我会得到“50”,Number("50")
会给我 50。
您正在做的 JSON.stringify([{"balance":"50"}][0].balance)
将导致“50”,而 Number(“50”) 将是 Nan
避免 JSON.stringify
你会很好。
输出结果为 JSON,所以我的建议是使用 JSON.parse() 将其解析为一个对象。
这是一个例子:
const ball1 = JSON.parse('[{"balance":"50"}]');
console.log(parseInt(ball1[0].balance));
您的方法不起作用的原因是因为您尝试使用 Number() 解析无效数字,它无效是因为它在字符串中包含字母和特殊字符,例如“balance”和“[]”字符, 所以它当然会 return NaN.