如何在JavaScript中将字符串变量转换为整数?

4

将String变量的值转换为int/数字变量的正确方法是什么?为什么bcInt仍然是string,而isNaN返回true

bc=localStorage.getItem('bc');
var bcInt=parseInt(bc,10);
var bcInt2=1;
console.log("bc------------>" +bc +" isNaN:" +isNaN(bc)); //isNaN returns true
console.log("bcInt------------>" +bcInt +" isNaN:" +isNaN(bcInt)); //isNaN returns true

bcInt2// isNaN returns false

1
如果parseInt()返回NaN,那么您的字符串实际上不包含值的数字表示。如果您已经告诉我们“bc”的值,也许有人可以帮忙解决问题,但是您没有提供那个信息。当然,这个值是解决整个问题的关键。 - Pointy
本地存储项“bc”中包含的值是什么?如果它不是数字(为空,包含字母等),那就是我所期望看到的。 - Oded
08-20 18:41:02.880: bc------------>"1" isNaN:true 08-20 18:41:02.880: bc------------>"1" isNaN:true - Sami
1
如果在“1”周围有双引号字符,则它将无法正常工作。 - Pointy
Pointy 得到了一个点。我在另一个地方使用了 stringify 函数,然后出现了双引号,这就是原因!谢谢大家的帮助。 - Sami
3个回答

9

parseInt 只有在您将数字作为第一个字符传递给它时才返回数字。

例子:

parseInt( 'a', 10 ); // NaN
parseInt( 'a10', 10 ); // NaN
parseInt( '10a', 10 ); // 10
parseInt( '', 10 ); // NaN
parseInt( '10', 10 ); // 10

此外,如果您想获取仅为数字的字符串,可以查看+运算符。
+'a'; // NaN
+'a10'; // NaN
+'10a'; // NaN
+''; // 0, that's tricky
+'10'; // 10

编辑:根据您的评论,我已经测试了 parseInt

parseInt( '08-20 19:41:02.880', 10 ); // 8

你做错了其他事情。 parseInt 返回所有直到不是数字为止的内容。如果第一个字符不是数字(或者没有找到任何数字),它将返回NaN


1

输入图像描述

let no = "25";

typeof no 'string'

let no2 = parseInt(no); no2 25

typeof no2 'number'


根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,帮助其他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - Community
这并没有回答问题。一旦你获得足够的声望,你就能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审查 - Александр Ермолин

0
答案是我使用了 localStorage.setItem('bc',JSON.stringify(bc)),它添加了双引号到 bc 中,因为此时它已经是一个字符串,这就是为什么 parseInt 没有起作用的原因。值是 ""1""

我和这个问题一样。仍然没有解决方案。 - Alex Coroza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接