我试图将req.params转换为Number,因为这是我在年度参数模式中定义的。
我试过了
req.params.year = parseInt( req.params.year, 10 );
和
Number( req.params.year);
和
1*req.params.year;
但不是它们有效。 我需要安装一些东西吗?
答案 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)。