js实现用千分位分隔符来表示数字
千分位表示数字的方法大家都不陌生,在涉及到金融领域的时候里面经常会用到,比如下面的金额效果:
使用js怎么实现上面的效果呢?使用js实现数字的千分位表示方法其实有很多,我这里介绍一种,如下是代码:
<script> function toThousands(num) { if(!num) return; var dot=""; var numb=""; num=num.toString(); if((num||0).toString().indexOf(".")>-1){ dot=num.substring(num.indexOf("."));//.6689 numb=num.substring(0,num.indexOf("."));//123456723456 }else{ numb=num; } var result = [ ], counter = 0; numb = numb.split(''); for (var i = numb.length - 1; i >= 0; i--) { counter++; result.unshift(numb[i]); if ((counter % 3==0) && i != 0) { result.unshift(','); } } return result.join('')+dot; } alert(toThousands(123456723456.6689)); </script>
代码说明:
toString()函数可以把数字等其他非字符串类型转化为字符串,如果一个数字想使用字符串的函数比如indexOf()等就必须先把数字使用toString()转为字符串。
str.substring(start,stop):截取字符串并返回新的字符串,[包括,不包括),下标从0开始,str不变
str.indexOf(searchvalue):返回searchvalue在str中首次出现的位置,无则返回-1
arr.unshift(e1,[e2,.,eN]):向数组的开头添加一个或更多元素,并返回新的长度。代码中的result.unshift(numb[i])的作用就是把整数部分“123456723456”从后往前依次放入到数组result的头部,并每隔3位加个“,”,最终变为123,456,723,456的样子。
如果确实不清楚运行流程,在浏览器加个断点调试一下即可:
arr.join([separator]):作用是把数组转为字符串,即返回以separator分割的字符串,代码中result.join('')表示并不用什么分隔,相当于直接把数组转为字符串。