You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
export const checkEmpty = (value) => {
|
|
|
|
|
|
// 处理 null 和 undefined
|
|
|
|
|
|
if (value === null || value === undefined) return true;
|
|
|
|
|
|
|
|
|
|
|
|
// 处理字符串
|
|
|
|
|
|
if (typeof value === 'string') {
|
|
|
|
|
|
return value.trim() === '';
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 处理数组
|
|
|
|
|
|
if (Array.isArray(value)) {
|
|
|
|
|
|
return value.length === 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 处理对象
|
|
|
|
|
|
if (typeof value === 'object') {
|
|
|
|
|
|
return Object.keys(value).length === 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 处理数字 - 0 不为空
|
|
|
|
|
|
if (typeof value === 'number') {
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 处理布尔值 - false 不为空
|
|
|
|
|
|
if (typeof value === 'boolean') {
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 其他类型默认为非空
|
|
|
|
|
|
return false;
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 递归函数转换字符串为数字(只转换看起来是数字的字符串)
|
|
|
|
|
|
export const convertNumericStrings = (obj) => {
|
|
|
|
|
|
Object.keys(obj).forEach(key => {
|
|
|
|
|
|
|
|
|
|
|
|
const value = obj[key];
|
|
|
|
|
|
// 如果是对象或数组,递归
|
|
|
|
|
|
if (typeof value === 'object' && value !== null) {
|
|
|
|
|
|
convertNumericStrings(value);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
if (isNumberOrDecimal(value)) {
|
|
|
|
|
|
// 如果是数字或小数,直接转换
|
|
|
|
|
|
obj[key] = parseFloat(value);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
// if (typeof value === 'string') {
|
|
|
|
|
|
// // 尝试转换为数字
|
|
|
|
|
|
// const num = parseFloat(value);
|
|
|
|
|
|
// // 检查转换是否有效,并且原字符串去掉空格后等于转换后的数字字符串(避免将非数字字符串转换为NaN)
|
|
|
|
|
|
// if (!isNaN(num) && value.trim() === num.toString()) {
|
|
|
|
|
|
// obj[key] = num;
|
|
|
|
|
|
// }
|
|
|
|
|
|
// // 如果还有其他格式的字符串数字,可以调整上面的条件
|
|
|
|
|
|
// }
|
|
|
|
|
|
});
|
|
|
|
|
|
return obj;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function isNumberOrDecimal(str) {
|
|
|
|
|
|
const regexDecimal = /^\d+(\.\d+)?$/;
|
|
|
|
|
|
return regexDecimal.test(str);
|
|
|
|
|
|
}
|