将字符串转换为数字node.js

时间:2016-05-17 08:54:03

标签: node.js string type-conversion

我试图将req.params转换为Number,因为这是我在年度参数模式中定义的。

我试过了

req.params.year = parseInt( req.params.year, 10 );  

Number( req.params.year);

1*req.params.year;

但不是它们有效。 我需要安装一些东西吗?

3 个答案:

答案 0 :(得分:101)

您无需安装任何东西。

parseInt(req.params.year, 10);

应该正常工作。

console.log(typeof parseInt(req.params.year)); // returns 'number'

如果您使用parseInt,您的输出是多少?它仍然是一个字符串吗?

答案 1 :(得分:4)

使用parseInt()是一个坏主意,主要是因为它永远不会失败。同样是因为某些结果可能出乎意料,例如INFINITY。
下面是处理意外行为的功能。

function cleanInt(x) {
    x = Number(x);
    return x >= 0 ? Math.floor(x) : Math.ceil(x);
}

请参阅以下测试用例的结果。

console.log("CleanInt: ", cleanInt('xyz'), " ParseInt: ", parseInt('xyz'));
console.log("CleanInt: ", cleanInt('123abc'), " ParseInt: ", parseInt('123abc'));
console.log("CleanInt: ", cleanInt('234'), " ParseInt: ", parseInt('234'));
console.log("CleanInt: ", cleanInt('-679'), " ParseInt: ", parseInt('-679'));
console.log("CleanInt: ", cleanInt('897.0998'), " ParseInt: ", parseInt('897.0998'));
console.log("CleanInt: ", cleanInt('Infinity'), " ParseInt: ", parseInt('Infinity'));

结果:

CleanInt:  NaN  ParseInt:  NaN
CleanInt:  NaN  ParseInt:  123
CleanInt:  234  ParseInt:  234
CleanInt:  -679  ParseInt:  -679
CleanInt:  897  ParseInt:  897
CleanInt:  Infinity  ParseInt:  NaN

答案 2 :(得分:0)

没有完整的答案  好的,这只是补充parseInt的信息,它仍然非常有效。 Express根本不允许修改req或res对象(不可变)。因此,如果您想有效地修改/使用此数据,则必须将其复制到另一个变量(var year = req.params.year)。