这个合集功能主要是为了处理前端计算数据
因为我的项目有很多表格公式计算是前端写的
所以有一个很麻烦的事情就是加减乘除的时候因为各种情况导致报错
最常见的就是后端传的值不规范
有时候这个字段没有值的时候给我返回的是数字0,有时候字符串数字0,有时候null,有时候 ’ ’ 等等之类的不确定情况
所以我就写了几个方法统一把后端的数据丢里面直接校验转换,凡是没有值的统一都转0这样计算不会报错。
numFormatting(a, f = 2) {
if ((!isNaN(parseFloat(a)) && isFinite(a))) {
let num1 = parseFloat(a)
if (num1 !== 0 ) {
return Number((num1).toFixed(f))
} else {
return 0
}
} else {
return 0
}
},
参数1:传入要转的对象。
参数2:数组,数组中的字段不处理。格式:[‘doctor’,‘name’,‘title’]
参数3:保留小数点后位数,默认2位
formatObj(obj, arr, f = 2) {
let keyList = Object.keys(obj)
keyList.forEach(key => {
if (arr.indexOf(key) == -1) {
if (obj[key].toString().indexOf('%') !== -1) {
let num = obj[key].slice(0, -1)
obj[key] = parseFloat(num) == 0 ? '0%' : parseFloat(num).toFixed(f) + '%'
} else {
obj[key] = parseFloat(obj[key]) == 0 ? 0 : parseFloat(obj[key]).toFixed(f)
}
}
})
return obj
},
function addition(a, b, f = 2) {
if ((!isNaN(parseFloat(a)) && isFinite(a)) && (!isNaN(parseFloat(b)) && isFinite(b))) {
let num1 = parseFloat(a)
let num2 = parseFloat(b)
return (num1 + num2)==0?0:(num1 + num2).toFixed(f)
} else {
return 0
}
}
function subtraction(a, b, f = 2) {
if ((!isNaN(parseFloat(a)) && isFinite(a)) && (!isNaN(parseFloat(b)) && isFinite(b))) {
let num1 = parseFloat(a)
let num2 = parseFloat(b)
return (num1 - num2).toFixed(f)
} else {
return 0
}
}
function multiplication(a, b, f = 2){
if ((!isNaN(parseFloat(a)) && isFinite(a)) && (!isNaN(parseFloat(b)) && isFinite(b))) {
let num1 = parseFloat(a)
let num2 = parseFloat(b)
if (num1 !== 0 && num2 !== 0) {
return (num1 * num2).toFixed(f)
} else {
return 0
}
} else {
return 0
}
}
function divisions(a, b, f = 2,multiple=100) {
if ((!isNaN(parseFloat(a)) && isFinite(a)) && (!isNaN(parseFloat(b)) && isFinite(b))) {
let num1 = parseFloat(a)
let num2 = parseFloat(b)
if (num1 !== 0 && num2 !== 0) {
return ((num1 / num2) * multiple).toFixed(f)
} else {
return 0
}
} else {
return 0
}
}