有些小用的小方法(持续更新,欢迎补充)

1. 字符串下划线转为驼峰式

 function toCamel(str){
   if(typeof str!=="string") return str;
   return str.replace(/_(\w)/g, function (a, b) {
     return b.toUpperCase()
   })
 }

2. 获取一个数字有几位小数

function getDecimals(num) {
  if (isNaN(num)) {
    throw("不可以有非数字的参数")
  }
  if (num=== null) {
    num= 0
  }
  let valStr = num.toString();
  let index = valStr.indexOf(".");
  if (index < 0) {
    return 0
  }
  return valStr.length - index - 1;
}

3. 数字相加,处理精度

核心就是先相加,得到的结果是失去精度的,没关系,继续找到这所有数字中小数位数最大的,然后得到的求和数字就保留这个小数位数就好了。

注意:这里用到了上面的【 2. 获取一个数字有几位小数getDecimals ,复制时候需要连带上面的方法一起复制。

function numberAdd(...numberList) {
  let someIsNAN = numberList.some(one => isNaN(one));
  if (someIsNAN) {
    throw("不可以有非数字的参数")
  }
  let sum = numberList.reduce((sum, one) => {
    return sum+=Number(one)
  }, 0)
  /* 获取最大小数位数 */
  let maxDecimals = Math.max(...(numberList.map(one => getDecimals(one))));
  // 根据自己的业务需求判断返回哪个
  /* 保留最大小数位数 */
  return sum.toFixed(maxDecimals);

  /* 小数位数的0会被去掉 */
  // return Number(sum.toFixed(maxDecimals))
}

      

4. 常用正则

ps:我就是个正则大菜鸡啊,有哪位可以推荐一个正则领进门的好文章链接,感谢感谢!

// 1. 字符串匹配,匹配<lsq ...</lsq>

let exp = /<lsq[^]*?<\/lsq>/g

 

// 2. 匹配某个字符串中间的内容,匹配<lsq></lsq>中间的内容

let exp = /(?<=<lsq>).*(?=<\/lsq>)/

 

posted @ 2023-02-23 15:57  蛙仔  阅读(23)  评论(0编辑  收藏  举报