JS 将分整数改为保留两位小数

问题

作为一个前端小白,总会遇到形形色色的奇葩问题。

看到前端同事超级喜欢链式处理字符串,感觉很方便,所以特意尝试了下,没想到就遇到了问题

需求是金额要展示 保留两位小数,比如 1234.56
接口返回的是分整数,是这样的 123456
都用来表示 一千二百三十四元五角六分

处理

const price = paymentAmount.split('').splice(-2, 0, '.').join('')

上述代码比较简单,先将字符串拆成数组,然后在倒数第二位插入英文句号,最后再合并到一起。

完美的链式调用,返回给我的是 空 。

解决

几经波折,找到原因,Splice 方法返回的不是修改后的数组:

splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。

返回的只是被删除的项目,而不是处理后的数组本身


splice 语法

我们知道,第二个参数决定要替换掉多少个元素,设为0,就是替换掉0个元素,那么返回值就是空数组,其实这种情况就是添加元素。

所以我得出一个结论:Splice 不可链式调用,如果你要的是整个葫芦

最终解决方案是,为了调用方便,封装了个方法:

    // 格式化 分整数 为 保留两位小数
    formatPirce(paymentAmount) {
      const price = paymentAmount.split('');
      price.splice(-2, 0, '.');
      return price.join('');
    },

    // 调用
    value: `¥${this.formatPirce(paymentAmount)}`,

最佳方案(2020.5.14)

好吧,我果真是小白,不用这么复杂的,直接 * 0.01 然后 toFixed(2) 就行了。

const price = (paymentAmount * 0.01).toFixed(2);

写在最后

小白问题多,其实是想放张鸣人的图片


うずまき ナルト

你可能感兴趣的:(JS 将分整数改为保留两位小数)