• js金额格式化,千分符,(好家伙!面试直接被问四次)


    前言

    九十月份,在我的面试经历中,这道题算是比较高频的了,都是出现在初次视频面试的过程中

    1、解题

    得到一个number类型数据,将小数点前面的部分从右到左用“,”每三位隔开
    例如

    输入 12344.2222
    输出 12,344.2222

    输入 344.2222
    输出 344.2222

    输入 -2344.2222
    输出 -2,344.2222

    2、思路

    • 校验输入的数据
    • 只处理小数点前面的部分
    • 判断是否为负数
    • 数据转数组,数组反转,reduce累加

    这里需要说的是最后一步

    • 既然是将数据从右到左每三位加一个逗号,这里想到的是先将数据每一位隔开成数组,然后再反转
    • 最后用到的是reduce来累加,达成一个字符串拼接的效果

    再来解释一下reduce

    reduce((pre, next, index)=>{
        return (index % 3 ? next : next + ',') + pre
     });
    
    • 1
    • 2
    • 3
    • 这里的index对应的下标是 next 在数组中的下标(切记
    • 由于此时数据已经是反转过来的,所以累加直接用从后往前加的方式就能达到反转之前的顺序了

    3、实现

    const convert = money => {
        if(typeof money !== 'number') return new Error('请输入正确的格式!');
        let num; // 小数点前面的部分
        const value = String(money).split('.')[1]; // 小数点后面的部分
        const flag = String(money).indexOf('-') > -1; // 是否为负数
        let result;
        if(flag){
            num = String(money).split('-')[1].split('.')[0];
        }else{
            num = String(money).split('.')[0];
        }
        
        // 先转数组 再反转  然后reduce判断位置累加
        result = num.split('').reverse().reduce((pre, next, index)=>{
            return (index % 3 ? next : next + ',') + pre
        });
        
    	// 拼接小数点后面的部分
        if(value){
            result = result + '.' + value;
        }
    	// 负数加上‘-’
        if(flag){
            result = '-' + result;
        }
    
        return result
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
  • 相关阅读:
    lwIP 开发指南(下)
    python django 小程序博客源码
    Win11如何获得最佳电源效率?
    会员生日提前了一天
    IMX6ULL + SPI LCD(驱动IC ILI9341)显示简单的QT界面
    修改借款金额的操作方法
    shopyy建站的功能
    Redis 是什么?
    计算机毕业论文微信小程序毕业设计项目ssm驾校教培服务系统小程序+后台管理系统|前后分离VUE[包运行成功]
    [附源码]计算机毕业设计JAVA圆梦山区贫困学生助学系统
  • 原文地址:https://blog.csdn.net/qq_41534913/article/details/127793893