JavaScript 의 parseInt()의 묘 용 에 대하 여 말씀 드 리 겠 습 니 다.

3024 단어 JavaScriptparseInt()
원인
이 블 로 그 를 쓴 이 유 는 오늘 leetcode 의 매일 한 문제 로문자열 변환 정수(atoi)문제 입 니 다.관심 이 있 으 면 제목 이름 을 클릭 하여 구체 적 인 설명 을 볼 수 있 습 니 다.제 가 여러 번 debug 를 성공 적 으로 제출 한 후에 댓 글 구역 에 가서 사내 들 의 문제 풀이 방향 을 보 았 습 니 다.보고 나 서 자 바스 크 립 트 에서 parseInt()가 이렇게 우수 하 다 는 것 에 감탄 을 금치 못 했 습 니 다."이것 은 나 에 게 우리 가 더 이상 익숙 하지 않다 고 생각 하 는 api 를 알려 주 었 다.아마도 우 리 는 진정한 의미 에서 파악 하지 못 했 을 것 이다."
나의 해답

/**
 * @param {string} str
 * @return {number}
 */
var myAtoi = function(str) {
    str = str.trim();
    //          
    var firstChar = str.charAt(),res = '',regSymbol = /^[\-\+]{1}/,regNumber = /^[0-9]{1}/;

    if(!regSymbol.test(firstChar) && !regNumber.test(firstChar)){
        return 0;
    }

    //      +  -
    if(regSymbol.test(firstChar)){
        var sliceStr = str.slice(1,str.length);
        for(var i=0;i<sliceStr.length;i++){
            if(regNumber.test(sliceStr.charAt(i))){
                res += sliceStr.charAt(i);
            }else{
                break;
            }
        }
        
        (res.length) ? res = parseInt(firstChar + res) : res = 0;

        if(firstChar == '-' && res < Math.pow(-2,31)){
            res = Math.pow(-2,31);
        }

        if(firstChar == '+' && res > Math.pow(2,31) - 1){
            res = Math.pow(2,31) - 1;
        }

        return res;
    }

    //        
    if(regNumber.test(firstChar)){
        var sliceStr = str;
        for(var i=0;i<sliceStr.length;i++){
            if(regNumber.test(sliceStr.charAt(i))){
                res += sliceStr.charAt(i);
            }else{
                break;
            }
        }

        if(parseInt(res) > Math.pow(2,31) - 1){
            res = Math.pow(2,31) - 1;
        }

        return res;
    }
};
 사내 의 해답

/**
 * @param {string} str
 * @return {number}
 */
var myAtoi = function(str) {
    const number = parseInt(str, 10);

    if(isNaN(number)) {
        return 0;
    } else if (number < Math.pow(-2, 31) || number > Math.pow(2, 31) - 1) {
        return number < Math.pow(-2, 31) ? Math.pow(-2, 31) : Math.pow(2, 31) - 1;
    } else {
        return number;
    }
};

비 교 를 통 해 우 리 는 자바 script 의 parseInt()이 빈 문자열,이니셜 판단,number 형식 결과 반환 등 일련의 작업 을 한 것 을 알 게 되 었 다.오늘 의 매일 한 문제 의 수요 와 완벽 하 게 맞 아 떨 어 졌 습 니 다.parseInt()로 이 문 제 를 해결 하 는 것 은 너무 시원 하지 않 습 니 다.
자 바스 크 립 트 의 parseInt()에 대한 묘 미 를 담 은 이 글 은 여기까지 소개 되 었 습 니 다.자 바스 크 립 트 parseInt()에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기