一拿到他给的面试题,感受挺容易的,不过等本身写后发现很是考虑逻辑,以及思惟能力(我是小白)
上网百度了一波全是用正则表达式来解决的,正则这块我只懂皮毛,因此感受有点看不明白,不过这个博客解释挺清楚的使用正则表达式实现千位分割符前端
我这我的就是有一个毛病,感兴趣的东西我就想以本身的思惟写出来,因此如下是一个前端小白的解决思路:
将函数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>
小白敬上!正则表达式