一些工具函数

工作中碰到了一些可以和业务剥离并封装为工具函数的逻辑,按照自己的想法写了一下记录在这里,以后碰到新的会在这里追加更新。读者朋友如果有更好的实现或者任何建议,非常欢迎你的指教和关怀!

判断是否为老版本

偶尔会碰到要对APP老版本做兼容处理的情形。

function isOldVersion (boundry, current) {
    const boundryArr = boundry.split('.')
    const currentArr = current.split('.')
    for (let i = 0; i < 3; i++) {
        const bound = Number(boundryArr[i])
        const curr = Number(currentArr[i])
        if (cuur < bound) {
            return true
        } else if (curr > bound) {
            return false
        }
    }
    return false
}
inputoutput
isOldVersion('5.1.0', '4.2.34')true
isOldVersion('5.1.0', '11.3.22')false
isOldVersion('5.1.0', '5.1.0')false

价格格式化

有时要给价格加逗号,但服务端返回的数据格式各一。

function formatPrice (price) {
  if (!price) {
    return 0
  }
  if (/,/.test(price)) {
    return price
  }
  price = String(price)
  const intPrice = price.match(/\d+/)[0]
  const HOLDER = 'HOLDER'
  const holder = price.replace(intPrice, HOLDER)
  const intPriceArr = intPrice.split('').reverse()

  let res = ''
  intPriceArr.forEach((item, index) => {
    if (index % 3 === 0 && index) {
      res = item + ',' + res
    } else {
      res = item + res
    }
  })
  return holder.replace(HOLDER, res)
}

还可以用 NumbertoLocaleString 方法替换手动加逗号的过程:

function formatPrice (value) {
  if (!value) {
    return 0
  }
  if (/,/.test(value)) {
    return value
  }
  value = String(value)
  const reg = /\d+\.?\d*/
  const HOLDER = 'HOLDER'
  const price = value.match(reg)[0]
  const holder = value.replace(price, HOLDER)
  value = holder.replace(HOLDER, Number(price).toLocaleString())
  return value
}
inputoutput
formatPrice(2689999)2,689,999
formatPrice('2689999')2,689,999
formatPrice('2689999元')2,689,999元
formatPrice('裸车价:¥2689999')裸车价:¥2,689,999
formatPrice('优惠:2689999元')优惠:2,689,999元
formatPrice('到手价:2689999.99元')到手价:2,689,999.99元
formatPrice('2,689,999')2,689,999
formatPrice('')0
formatPrice()0
    原文作者:边城少年_
    原文地址: https://www.jianshu.com/p/e58deee60afd
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞