>

자바 스크립트에서 문자열을 실제 정수로 구문 분석하는 것에 대한 질문이 있습니다. 내가 작성한 백엔드 메소드가 있는데 accountNumber 를 허용합니다.  (문자열) 및 1 년 (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로 시도하고 있습니다.

So I'm using angularJs and I got an with ng-model="account.searchDocsByYear", and I use the $scope value of account.searchDocsByYear as the argument for parsing. It still returns false. Not sure what is different. All the mentioned examples check out fine for me too. But console.log(Number.isInteger(Number.parseInt($scope.account.searchDocsByYear))); still returns false

감사합니다!

  • 답변 # 1

    Unary plus ( + )를 사용할 수 있습니다 )이 목적을 위해 덜 장황하고 피연산자를 다음과 같이 숫자로 변환하려고 시도합니다.

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

  • 답변 # 2

    예상대로 작동합니다.

    아래 스 니펫 참조 :

    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>
    
    

관련 자료

  • 이전 database - MySQL에서 범위 곱하기
  • 다음 excel - sumifs - 여러 셀 참조