题解 | #分隔符#

分隔符

http://www.nowcoder.com/practice/e5696992841841a8ab9d026324e4bb77

03_分隔符

本题考点:Math.abs、parseInt、split、reverse、join

根据题目要求,返回数字参数的千分位分隔符字符串,核心步骤有:

  1. 首先判断数字参数是否为负数,如果为负数,保留负号
  2. 将数字参数拆解为数组并且反转
  3. 遍历数组,返回新数组,需要标志位,每当数组遍历次数达到三次,给新数组添加","符号
  4. 拿到新数组之后使用将新数组拼接为字符串,如果有负号则将符号拼接到字符串头部

参考答案

function _comma(number) {
    let negative = ''
    if(number < 0) {
        negative = '-'
        number = Math.abs(number)
    }
    let array = parseInt(number).toString().split("").reverse()
    let sign = 0
    let commaArray = []
    for(let i=0 ; i<array.length ; i++) {
        if(sign === 3) {
            commaArray.push(',')
            sign = 0
        }
        commaArray.push(array[i])
        sign ++
    }
    return negative + commaArray.reverse().join('')
}

全部评论
function _comma(number) { // 补全代码 //如果有小数点,找到小数点把后面的删除然后放到一个变量里面 let str=number.toString().split("") //检索小数点的下标 let index=str.indexOf('.') //拿到小数点后面的小数 let str1=str.splice(index).join('') //检索负号 let x=str.indexOf('-') //删除负号 let str2=str.splice(x,1) str.reverse() for(let i=3;i
点赞 回复 分享
发布于 2023-07-28 10:09 重庆
好办法,但是if(sign === 3) 这个判断可以通过下标i来判断,这样可以减少自定义的一个变量,换成if( i != 0 && i % 3 == 0)
点赞 回复 分享
发布于 2023-01-06 15:52 重庆
我很好奇 返回值必须是数字型吗 我最后的值也是字符串型 它提交不通过呀
点赞 回复 分享
发布于 2022-09-17 00:19 陕西
点赞 回复 分享
发布于 2022-08-23 09:30 云南

相关推荐

评论
33
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务