看到很多网站都有像粉丝数、收藏数、点赞数等数据,他们展示的时候如果数目过大常常以k结尾,如15.8k而不是15800
那么我试着利用js怎么将数据处理成这样
打算实现的效果是:
- 若数字小于4位数,则不改变,直接返回
- 4位数以上的数字小数点向前三位,且保留一位小数
- 若是7021k这样的数则显示7k而不是7.0k
- 若是7260这样的数则十位四舍五入显示7.3k
下面是代码:
// 随机制造一个五位数
let num = `${Math.round(Math.random()*99999)}`
console.log('随机制造的数:',num)
// 传入一个整数参数,函数处理成多少k的形式,且保留一位小数点
function change(num){
// 若数字是四位数以下没到千位的,就直接返回
if(num.length<4) return num
else{
// 获取倒数第四个数及之前/去掉后三个数/千位数之前
let num1 = num.substring(0,num.length-3)
// 获取百位数
let num2 = num.substring(num.length-3,num.length-2)
// 获取十位数
let num3 = num.substring(num.length-2,num.length-1)
// 设置一个小数点
let point = '.'
// 若十位数大于5了,要进一位给百位数
if(num3>=5){
// 若百位数恰好等于9,则要进位,百位就成了0,千位数之前的加1
if(num2 == 9){
num2 = 0
num1 = (++num1)+''
}else{
// 若不等于9就百位数加1即可
num2 = ++num2
}
}
// 完事后若百位数是0的话需要省略掉百位,及小数点
if(num2==0){
num2 = ''
point = ''
}
// 最后拼接千位数之前、小数点、百位数、和一个k
return num1.concat(point,num2,'k')
}
}
console.log('处理后得到:',change(num))
看看效果:
哇塞,实现了想要的效果~