최근 프로젝트 작업을 하다 보면 금액을 천분의 일 단위로 표시해야 합니다(즉, 세 자리마다 쉼표로 구분됨). 이전 버전은 제 부주의로 인해 수정되었습니다. 모두에게 미안해요! 지금은 수정했는데 아직 부족한 부분이 있으면 조언 부탁드립니다!
1. 쉼표로 구분된 0~9자를 지원합니다.
JS 코드는 다음과 같습니다.
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) {
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은 자동으로 지워지고 나머지는 모두 정상입니다! 테스트해본 결과 기본적으로 요구 사항을 충족합니다. 불완전한 부분이 있으면 조언을 부탁드립니다.