我试图将req.params转换为数字,因为这是我在年份参数的模式中定义的内容。
我已经尝试过
req.params.year = parseInt( req.params.year, 10 );
和
Number( req.params.year);
和
1*req.params.year;
但是它们都不起作用。我需要安装什么吗?
我试图将req.params转换为数字,因为这是我在年份参数的模式中定义的内容。
我已经尝试过
req.params.year = parseInt( req.params.year, 10 );
和
Number( req.params.year);
和
1*req.params.year;
但是它们都不起作用。我需要安装什么吗?
您无需安装任何东西。
parseInt(req.params.year, 10);
应该正常工作。console.log(typeof parseInt(req.params.year)); // returns 'number'
如果使用parseInt,你的输出将会是什么?它还是一个字符串吗?
var p = parseInt(req.params.year);
- Tuskapp.post
中使用const { a } = req.body; console.log(parseint(a))
时,出现了ReferenceError: parseint未定义
的错误。实际上,parseInt应该是这样写的,这是我的错误。 - Timo使用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
不是完整的答案 好的,这只是补充关于parseInt的信息,它仍然非常有效。Express不允许修改req或res对象(不可变)。因此,如果您想有效地修改/使用此数据,必须将其复制到另一个变量中(var year = req.params.year)。
Number()
- parseInt()
- parseFloat()
示例:
Number("256.123") //返回 256.123
Number("252px") //返回 NaN
parseInt("256.123") //返回 256
parseInt("256px") //返回 256
parseFloat("256") //返回 256
parseFloat("256.123") //返回 256.123
parseFloat("256.23px") //返回 256.23