大家好,又见面了,我是你们的朋友全栈君。
之前看到一道面试题,要求使用js写千分位,当时面试时有点懵逼,但是后来参考网上的写法与自己的思考,写出了千分位。
以下是通过网上的代码,本人进行了进一步优化后的代码,仅供参考。
相比较与网上的方法,我的方法实现了能对小数也进行处理的功能,不会出现如果数字是小数,分割千分位就是出错的问题。
首先在开始的时候对数字做处理,使用split方法将转化为string类型的字符串在“.”位处分割开,然后装进数组中
然后将前半部分(整数部分)反转过来
使用循环判断长度,三位长度就增加一个逗号。
再将其转化为数字并在此反转
这时候要判断之前的数是否为整数,如果不是整数,就将arr【1】(小数部分)加在后面即可。
在控制台打印出最后的成果。
当然,不能忘记要有返回值,所以return是必须的。
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>千分位</title> </head> <body> </body> <script type="text/javascript"> function parseNum(number){ var arr = String(number).split("."); //定义一个数组,将要分割的数组转为字符串并判断时候为整数,小数位使用split在小数点处分割开 var list = arr[0].split('').reverse(); //定义list来装分割出的整数部分,并转化为数组,使用reverse方法将其反转 for(var i = 0; i < list.length; i++){ //定义变量,判断list的长度 if(i % 4 == 3){ //当长度为三位时,使用splice方法增加逗号。splice(位置,0(增加),增加的东西) list.splice(i, 0, ','); } } list = list.reverse().join(''); // 将list在反转过来并使用join的方法将其变为数字 if(arr[1] !== undefined){ //当小数位不为undefined值时(有小数) list = list + '.' + arr[1]; } return list; } console.log(parseNum(1234567890.111)); </script> </html>
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167688.html原文链接:https://javaforall.cn