项目中有一个表单,初始化根据服务端返回的数据渲染,服务端返回的是一个对象,有些字段的值为 ‘NULL’ 这种形式的,渲染出来没什么意义,一般都会转换为空。这种形式的字符串布尔值是 false,而且是对象的值,不好一键转换,这里就需要写一个函数去做校验了。这里我写了个简单的转换函数如下:

export function checkVal(val) {
const isSense = checkStr => {
if (typeof checkStr !== 'string') {
return checkStr;
}
const noSense = ['null', 'undefinded'];
const str = checkStr.toLowerCase();
return noSense.includes(str) ? '' : checkStr;
};
const isObject = value => {
const type = typeof value;
return value != null && (type === 'object' || type === 'function');
};
if (isObject(val)) {
const keys = Object.keys(val);
let newVal = Object.create(null);
keys.forEach(el => {
newVal[el] = isSense(val[el]);
});
return newVal;
}
isSense(val);
}

首先判断输入值是否为对象,不是对象的话我们就直接处理了,这里的处理也很简单,值不在无意义数组里面,就返回原始值否则返回空。若输入值是一个对象,则遍历一下 key,当前 key 对应的值若是无意义值返回空,否则返回原始值。