有些小用的小方法(持续更新,欢迎补充)
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>)/