【发布时间】:2018-07-26 15:17:00
【问题描述】:
我有一个关于在 javascript 中将字符串解析为真正整数的问题。我写了一个后端方法,它接受accountNumber(字符串)和年份(int),我从前端调用这个方法。
除非传递的是实际的 int 而不是“数字”,否则该方法会报错。
我尝试了几种方法来解析我的字符串:
const year = parseInt(stringValue);
typeof year == number
const year = Number.parseInt(stringValue);
Number.isInteger(year) == false
Number.isInteger(2018) == true
我什至尝试过使用 Math 类,但没有成功。
const year = Math.floor(stringValue);
年份仍然只是一个“数字”
此外,我尝试将 2018 硬编码到我的函数中,它按预期工作。我似乎无法将我的值解析为一个真正的整数,我想知道,我该怎么做呢?还是只是建议我在后端接受一个字符串并在那里解析它?
====== 编辑 =======
我正在尝试使用 AngularJS。
所以我使用了 angularJs,我得到了一个 with ng-model="account.searchDocsByYear",我使用 account.searchDocsByYear 的 $scope 值作为解析的参数。它仍然返回错误。不确定有什么不同。所有提到的例子对我来说也很好。但是 console.log(Number.isInteger(Number.parseInt($scope.account.searchDocsByYear)));仍然返回 false
谢谢!
【问题讨论】:
-
您如何检查这些值?
console.log(year)解析后有没有试过?是NaN吗?你知道typeof只有"number"代表数字,对吧? JavaScript 中没有"integer"类型。 -
你应该使用
typeof -
当然我正在使用console.log()....并且我希望能够使用Number.isInteger() 并返回true。由于我的后端方法接受一个整数,并且在我通过 2018 硬编码传递它时工作,但在尝试获取用户输入并解析它时不起作用。
-
@LearningJS888 那么解析后
year是什么?stringValue到底是什么? -
解析一年后它只是一个“数字”。但看起来 Number 类通过使用 Number.isInteger() 识别真正的整数,因此 Number.isInteger(2018) 为 true,但将已解析的值传递给 Number.isInteger() 返回 false ...试图了解如何原始数字 2018 与从字符串解析的相同数字不同。
标签: javascript angularjs parsing integer