同砚前端口试碰到这么一个问题 :给数字增加千分位分隔符
一拿到他给的口试题,觉得挺轻易的,不过等本身写后发明异常斟酌逻辑,以及头脑能力(我是小白)
上网百度了一波满是用正则表达式来处理的,正则这块我只懂外相,所以觉得有点看不邃晓,不过这个博客诠释挺清晰的运用正则表达式完成千位支解符
我这个人就是有一个缺点,感兴趣的东西我就想以本身的头脑写出来,所以以下是一个前端小白的处理思绪:
将函数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>
小白敬上!