我正在尝试将req.params转换为Number,因为这是我在架构中为Year param定义的内容。
我试过了
req.params.year = parseInt( req.params.year, 10 );
和
Number( req.params.year);
和
1*req.params.year;
但它们都不起作用。我需要安装一些东西吗?
我正在尝试将req.params转换为Number,因为这是我在架构中为Year param定义的内容。
我试过了
req.params.year = parseInt( req.params.year, 10 );
和
Number( req.params.year);
和
1*req.params.year;
但它们都不起作用。我需要安装一些东西吗?
Answers:
您不必安装任何东西。
parseInt(req.params.year, 10);
应该正常工作。
console.log(typeof parseInt(req.params.year)); // returns 'number'
如果使用parseInt,输出是什么?还是字符串吗?
var p = parseInt(req.params.year);
使用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