js中价格相关的一些处理方式

在前端书写中,我们经常会对价格有一些处理,这边我自己总结了一部分价格相关的处理方式

1、为价格添加单位

                /**
                 * 价格添加单位
                 * @param {float} price 价格
                 * @param {string} unit 单位
                 * @param {string} position 单位位置 prev--前缀  after--后缀
                 * @param {boolean}  is_free
                 * @return {string}       
                 */
                priceUnit(price, unit = '¥', position = 'prev', is_free = true) {
                    if (is_free && Number(price) === 0) {
                        return '免费';
                    }
                    if (position === 'prev') {
                        return unit + price;
                    } else {
                        return price + unit;
                    }
                },

2、为价格添加上正负号

                
                /**
                 * 给价格附加上正负号
                 * @param {boolean} is_true    是否为正数
                 * @param {float|null} price    可为空
                 * @return {string}
                 */
                priceSymbol(is_true, price = '') {
                    return (is_true ? '+' : '-') + price;
                },

3、正负数价格的颜色(当然这个方法还可以有一些别的用途,例如:处理一些三元运算)

                
                /**
                 * 正负数的颜色
                 * @param {boolean} is_true 是否为正数
                 * @param {string} true_color 正数的颜色
                 * @param {string} false_color 负数的颜色
                 * @return {string}      
                 */
                priceColor(is_true, true_color = '#ff4544', false_color = '#3fc24c') {
                    return is_true ? true_color : false_color;
                }

 4、价格阈值处理(例如将12345处理成1.23w,当然w要自带,这里没有给出)

            /**
             * 根据某个特定的阈值,分离给定价格的整数和小数部分
             * @param {float} price 给定的价格
             * @param {int} yuzhi 给定的阈值
             * @returns {*|{floatPrice: number, intPrice: number}} 分离的整数和小数部分
             */
            handlePrice(price, yuzhi = 10000) {
                let a = yuzhi / 100;
                let temp = price / a;
                let intPrice = 0;
                let floatPrice = 0;
                if (price > yuzhi) {
                    intPrice = Math.floor(temp / 100);
                    floatPrice = Math.round(temp % 100);
                } else {
                    return this.handlePrice(price, 1);
                }
                return {intPrice: intPrice, floatPrice: floatPrice};
            }

 

posted @ 2021-07-21 15:12  风哀伤  阅读(409)  评论(0编辑  收藏  举报