原生js之千位分隔符(包含小数状况)

同砚前端口试碰到这么一个问题 :给数字增加千分位分隔符

一拿到他给的口试题,觉得挺轻易的,不过等本身写后发明异常斟酌逻辑,以及头脑能力(我是小白)
上网百度了一波满是用正则表达式来处理的,正则这块我只懂外相,所以觉得有点看不邃晓,不过这个博客诠释挺清晰的运用正则表达式完成千位支解符

我这个人就是有一个缺点,感兴趣的东西我就想以本身的头脑写出来,所以以下是一个前端小白的处理思绪:
将函数thousand的参数a算作3部份组合head,body,xiaoshu.列如:1314.520可当作1 314 .520这三部份组合而成。废话少说,代码以下:

<script>
function thousand(a){
    var arr = new Array(); 
    var xiaoshu = "";  //用来纪录参数小数数值包含小数点
    var zhengshu ="";  //用来纪录参数录整数数值
    if(a<1000){    //当参数小于1000的时刻直接返回参数
        return a;
    }else{
        t = a.toString();   //将整数转换成字符串
        if(t.indexOf('.')>0){   //假如参数存在小数,则纪录小数部份与整数部份
            var index = t.indexOf('.');
            xiaoshu = t.slice(index,t.length);
            zhengshu = t.slice(0,index);
        }else{   //不然整数部份的值就即是参数的字符范例
            zhengshu = t;
        }
        var num = parseInt(zhengshu.length/3);   //推断须要插进去千位支解符的个数

        //将整数1234567890部份拆分为2部份,变量head:1   变量body:123456789
        var head = zhengshu.slice(0,zhengshu.length-num*3);  
        if(head.length>0){  //假如head存在,则在head背面加个千位分隔符,
            head += ',';
        }
        var body = zhengshu.slice(zhengshu.length-num*3,zhengshu.length);

        //将body字符串123456789转换成一个字符数组arr2 = ['123','456','789']
        var arr2 = new Array();   
        for(var i=0;i<num;i++){
            arr2.push(body.slice(i*3,i*3+3));
        }
        body = arr2.join(',');   //将数组arr2经由过程join(',')   要领,拼接成一个以逗号为距离的字符串

        zhengshu = head + body;  //拼接整数部份
        var result = zhengshu + xiaoshu;   //末了拼接整数和小数部份
        return result;   //返回效果
    }
}
console.log(thousand(665565656511325161.233333));
</script>

小白敬上!

    原文作者:icezero
    原文地址: https://segmentfault.com/a/1190000010456247
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞