問題描述
字符串補0是常見的需求,比如日期不足2位補0,數字精度不足補0等,需求是給一個數字和一個小數精度返回一個帶有特定精度的數字字符串
問題分析
字符串補0操作可以考慮切割字符串操作,參考:substr() 方法
問題解決
- 先看一個日期補0的方法:
function padStart(str){
return ('0' + str).substr(-2)
}
padStart(2) // 02
padStart(10) // 10
- 方法延伸,輸出固定長度,不足的前面補0
function padStart(str, len){
return ('0000000000000000' + str).substr(-len)
}
padStart(2, 4) // 0002
padStart(10, 4) // 0010
- 后綴補0保持精度
function padEnd(val, pre) {
if(!isNaN(val) && isFinite(val)) {
let parts = val.toString().split('.')
let pad = '0000000000000000'
// let pad = Array(pre + 1).join('0')
if(parts[1]) {
pad = parts[1] + pad
}
pad = pad.substr(0, pre)
return parts[0] + '.' + pad
}
return ''
}
padEnd(8, 4) // 8.0000
padEnd(3.5, 4) // 3.5000
padEnd(1.23456, 4) // 1.2345