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}; }