关于项目中序号的问题,指定长度,不够在前面补0

问题描述:在项目中遇到产品要求自动生成序号,序号要求是四位,如果不足四位就以0补充,例如一个数字是32,则显示应该为0032

以下使用num代表需要转换的数字,length代表需要保留的位数

解决方法1:

let num = 38;
function fn(num, length) {
		return (num/Math.pow(10,length)).toFixed(length).substr(2);
}
fn(num, 4)

// 这个方法先调用Math.pow求出10的length幂的值,再用num/这个值,得出一个小数,再调用toFixed保留小数位数后length位,toFixed返回值是一个字符串,此时再调用字符串的substr方法截取掉字符串的小数点和小数点前面的0

解决方法2:

let num = 38;
function fn(num, length) {
		return ( '0000000000000000' + num ).substr( -length );
}
let x = fn(num, 4)

// 这个方法使用到了字符串的拼接和字符串的截取,先在当前数字前面拼接上多个0,再从后往前截取需要的位数

解决方法3:

let num = 38;
function fn(num, length) {
    	return (Array(length).join('0') + num).slice(-length);
}
let x = fn(num, 4)

// 这个方法中使用了Array(length)生成一个空数组,Array()函数的特性,如果只传递给它一个数字参数,会返回指定个数元素为空的数组,所以调用了Array(length)方法后,生成了一个lengh位数的数组,但元素都为empty;再调用数组的join将数组按特定字符转换成字符串,然后将num拼接到这个字符串的最后,再调用slice把字符串从后往前截取,截取位数传入你需要的位数

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值