>웹 프론트엔드 >JS 튜토리얼 >천 번째 자리 서식 지정을 위한 JS 코드(쉼표로 구분. 0~9자리를 구분하는 쉼표를 지원하도록 코드가 수정됨)_javascript 기술

천 번째 자리 서식 지정을 위한 JS 코드(쉼표로 구분. 0~9자리를 구분하는 쉼표를 지원하도록 코드가 수정됨)_javascript 기술

WBOY
WBOY원래의
2016-05-16 17:10:31918검색

최근 프로젝트 작업을 하다 보면 금액을 천분의 일 단위로 표시해야 합니다(즉, 세 자리마다 쉼표로 구분됨). 이전 버전은 제 부주의로 인해 수정되었습니다. 모두에게 미안해요! 지금은 수정했는데 아직 부족한 부분이 있으면 조언 부탁드립니다!

1. 쉼표로 구분된 0~9자를 지원합니다.

JS 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

/**
         * JS格式化
         * @param number 要格式化的数字
         * @param d [0-9]位 逗号隔开
         */

         function numFormat(number,d) {

             var numArrs = ['0','1','2','3','4','5','6','7','8','9'],
                 REG_NUMBER = /^\d+(.\d+)?$/;

             d = d || 3; // 不传 是3位 千分位

             if(isNumber(number) || isString(number) || REG_NUMBER.test(number)) {

                 // 先转换成字符串
                 var toString = number + '',
                     isPoint = toString.indexOf('.'),
                     prefix,   // 前缀
                     suffix,   // 后缀
                     t = '';

                 if(isPoint > 0) {
                    prefix = toString.substring(0,isPoint);
                    suffix = toString.substring(isPoint + 1);

                 }else if(isPoint == 0) {
                    prefix = '';
                    suffix = toString.substring(1);

                 }else {
                    prefix = toString;
                    suffix = '';
                 }

                 if(prefix != '') {
                    prefixArr = prefix.split('').reverse();

                    var isArrayIndex = isArray(d,numArrs);
                    if(isArrayIndex > -1) {

(var i = 0, ilen = prefixarr.length; i & lt; ilen; i = 1) {

t = prefixarr [i] ((i 1) % isarrayindex == 0 && (i 1). != prefixArr.length ? "," : "");
                      }
                    t = t.split("").reverse().join("");
                       if(접미사 != ' ') {
                           t "."를 반환합니다. 접미사;
                       }else {
                        반환 t;
                   }

                   }else {
                       return '传入的多少位不正确';
                   }

                 }else if(접두사 != '' && 접미사 == ''){

                   접두사 반환;

                }else if(접두사 == '' && 접미사 != ''){

                   접두사 = 0;

                   접두사 접미사 반환;

                }else {
                    "유错误" 반환;
                }            }

         }
         function isArray(item,arrs) {
            for(var i = 0, ilen = arrs.length; i < ilen; i {
                if( 항목 == arrs[i]) {
                   return i;
               }
           }
            return -1;
         }
         function isNumber(number) {
            return Object.prototype .toString.apply(number) === '[객체 번호]';
         }

         function isString(number) {
            return Object.prototype.toString.apply(number) === ['object String'];

         }


그런데 불완전한 부분이 있는 것 같습니다. console.log(numFormat("1111.00")); 을 호출하면 1,111.00 대신 1,111이 브라우저에 출력됩니다. 0은 자동으로 지워지고 나머지는 모두 정상입니다! 테스트해본 결과 기본적으로 요구 사항을 충족합니다. 불완전한 부분이 있으면 조언을 부탁드립니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.