【问题标题】:Parsing a string to true Integer in Javascript在Javascript中将字符串解析为真整数
【发布时间】: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


【解决方案1】:

您可以为此目的使用Unary plus(+),它不那么冗长,并尝试将其操作数转换为数字,如下所示:

const stringValue = '2018';
const year = +stringValue;
console.log('Is integer: ' + Number.isInteger(year))

【讨论】:

    【解决方案2】:

    按预期工作。

    见下sn-p:

    function ctrl($scope){
     $scope.account = {
        "searchDocsByYear" : "2018"
     }
     console.log(Number.isInteger(Number.parseInt($scope.account.searchDocsByYear)))
    }
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
    
    <table ng-app="" ng-controller=ctrl>
    </table>

    【讨论】:

    • 所以我使用了 angularJs,我得到了一个带有 ng-model="account.searchDocsByYear" 的 ,我使用 account.searchDocsByYear 的 $scope 值作为解析的参数。它仍然返回错误。不确定有什么不同。所有提到的例子对我来说也很好。但是 console.log(Number.isInteger(Number.parseInt($scope.account.searchDocsByYear)));仍然返回 false
    • @LearningJS888 检查上面。
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多