核心思想:
- 判断数字参数是否为负数,如果为负数,则保留负号(
flag
)- 将数字拆分成整数部分和小数部分(
fractional
,若不存在小数部分,则值为undefined
),保留小数部分- 将整数部分转换成字符串,再转成数组(
numArr
),再反转- 准备一个新数组(
commaArr
),遍历整数数组(numArr
),遍历将numArr
中的值push
到commaArr
中。每遍历3次,给新数组添加,
。- 最后返回
commaArr
与fractional
以及flag
的组合
代码:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8>
</head>
<body>
<script type="text/javascript">
function _comma(number) {
let commaArr = []
let flagStr = number > 0 ? '' : '-'
let numParts = ('' + Math.abs(number)).split('.')
let [numPart, fractional] = numParts
let numArr = numPart.split('').reverse()
let sign = 0
for(let i=0; i<numArr.length; i++){
if(sign === 3){
commaArr.push(',')
sign = 0
}
commaArr.push(numArr[i])
sign++
}
return flagStr + commaArr.reverse().join('') + (fractional ? '.' + fractional: '')
}
console.log(_comma(123434))
</script>
</body>
</html>