输入数字,根据用逗号分隔数字问题 - 图1

解法一 字符转数组,然后反向加,

  1. const paddingNum=(num)=>{
  2. let str=num+""; //变字符
  3. let intArr
  4. if(str.indexOf('.')===-1) intArr=str.split(''); //如果没有小数
  5. let part=str.split('.'); //有小数部分,分割小数
  6. intArr=part[0].split('');
  7. let sym=""; //记录正负号
  8. if(intArr.indexOf("-")===0){
  9. sym="-";
  10. intArr.splice(0,1);
  11. }
  12. let count=0; // 记录插入逗号的位置
  13. let res=[];
  14. for(let i=intArr.length-1;i>=0;i--){
  15. let temp=intArr[i];
  16. if(count===3){
  17. res.unshift(',');
  18. count=0;
  19. }
  20. res.unshift(temp);
  21. count++;
  22. }
  23. return str.indexOf('.')===-1?sym+res.join(''):sym+res.join('')+"."+part[1]; 根据有没有小数输出
  24. }

解法二、用subString直接从numString里提取,并拼接字符串。

  1. const paddingNum=(num)=>{
  2. let sym= num>=0?'':'-';
  3. let str=Math.abs(num)+'';
  4. let intCount=str.indexOf(".")===-1?str.length:str.indexOf(".");
  5. if(intCount<=3){
  6. return sym+str;
  7. }
  8. let index=intCount%3;
  9. let res=index===0?"":str.substring(0,index)+",";
  10. for(let i=0;i<(intCount-yushu)/3-1;i++){
  11. res+=str.substring(index,index+3)+",";
  12. index+=3;
  13. }
  14. res+=str.substring(index);
  15. return sym+res;
  16. }