Web前端面试指导(二十二):用js实现千位分隔符,怎么实现?
本题的难度偏高,涉及到的算法确实有一点的小复杂,这种题目一般出现在笔试题上,不会出现在面谈上。这道题主要的目的应该是考察你是否有一题多解的思路,特别是正则表达式的使用,如果你能使用正则表达式做出来,面试官应该会被你深深地镇住!
方法一:使用正则表达式
<span style="font-size:14px;">function format (num) { var reg=/d{1,3}(?=(d{3})+$)/g; return (num + "").replace(reg, "$&,"); }</span>解释
正则表达式 d{1,3}(?=(d{3})+$) 表示前面有1~3个数字,后面的至少由一组3个数字结尾。
?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始。
$& 表示与正则表达式相匹配的内容,具体的使用可以查看字符串replace()方法的
运行的过程看下图
假如有数字13123903243,则正则表达式查找与替换的过程,如下图所示
第二种:方法-正常思维算法
function format(num){ num=num+"";//数字转字符串 var str="";//字符串累加 for(var i=num.length- 1,j=1;i>=0;i--,j++){ if(j%3==0 && i!=0){//每隔三位加逗号,过滤正好在第一个数字的情况 str+=num[i]+",";//加千分位逗号 continue; } str+=num[i];//倒着累加数字 } return str.split("").reverse().join("");//字符串=>数组=>反转=>字符串 }基本思路
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。