Javascript String to int conversion

时间:2013-09-10 07:59:49

标签: javascript string int type-conversion

我在页面中嵌入了以下JS:

var round = Math.round;
var id = $(this).attr("id");

var len = id.length;
var indexPos = len -1; // index of the number so that we can split this up and used it as a title

var pasType = id.substring(0, indexPos); // adult, child or infant
var ind = round(id.substring(indexPos)); // converts the string index to an integer
var number = (id.substring(indexPos) + 1); // creates the number that will go in the title
window.alert(number);

id将类似于adult0,我需要将该字符串分成成人和0 - 这部分工作正常。

当我尝试增加0时出现问题。正如您所看到的,我使用Math.round将其转换为整数,然后将其加1 - 我希望此后0为1。但是,它似乎没有将其转换为整数,因为我得到01,而不是1。在使用adult1进行测试时,我得到的提醒是11

我正在使用this问题作为参考,并且还尝试了var number += id.substring(indexPos);,这打破了JS(unexpected identifier '+='

有谁知道我做错了什么?有没有更好的方法呢?

7 个答案:

答案 0 :(得分:33)

parseInt()函数解析string并返回integer,10是基数或基数 [DOC]

var number = parseInt(id.substring(indexPos) , 10 ) + 1;

答案 1 :(得分:7)

这与运算符中的JavaScript +有关 - 如果数字和字符串被“添加”,则该数字将转换为字符串:

0 + 1; //1
'0' + 1; // '01'

要解决此问题,请使用+一元运算符,或使用parseInt()

+'0' + 1; // 1
parseInt('0', 10) + 1; // 1

一元+运算符将其转换为数字(但如果它是小数,则会保留小数位),parseInt()是不言自明的(转换为数字,忽略小数位)。

第二个参数对于parseInt()在放置前导0时使用正确的基数是必要的:

parseInt('010'); // 8 in older browsers, 10 in newer browsers
parseInt('010', 10); // always 10 no matter what

如果你需要将字符串中的小数转换为它们的数值,还有parseFloat() - +也可以这样做,但它的行为略有不同:但这是另一个故事。

答案 2 :(得分:4)

JS会认为0是一个字符串,实际上是将其转换为int,使用:parseInt()函数,如:

var numberAsInt = parseInt(number, 10);  
// Second arg is radix, 10 is decimal.

如果数字无法转换为int,它将返回NaN,因此我建议在生产中使用的代码中检查也是如此,或者至少如果您不是100%确定输入。

答案 3 :(得分:3)

Number Class转换: -

例如:

var n = Number("103");
console.log(n+1)

输出 104

注意: - Number是课程。当我们传递字符串时,Number class的构造函数将转换它。

答案 4 :(得分:2)

如果你确定if.substring(indexof)是一个数字,你可以这样做:

var number = Number(id.substring(indexPos)) + 1;

否则我建议检查Number函数是否正确评估。

答案 5 :(得分:2)

使用parseInt():

var number = (parseInt(id.substring(indexPos)) + 1);` // creates the number that will go in the title

答案 6 :(得分:2)

虽然parseInt是执行此操作的官方函数,但您可以使用此代码实现相同的功能:

number*1

优点是您可以保存一些字符,如果您的代码需要进行大量此类对话,则可能会节省带宽。