需求:将下面数据中的字段为空的值全部替换为"--"
let tempArr = [
{
config_type: 1,
down_num: 0,
init_date: '2020-07-20',
roleid: '-',
rolename: '',
userid: 'asdfasdfsadfas',
username: '张三',
other: null
},
{
config_type: 1,
down_num: 16,
init_date: '2020-07-25',
roleid: '',
rolename: '',
userid: 'asdfsadfsd',
username: '李四',
other: {
config_type: 1,
down_num: 0,
init_date: '2020-07-26',
roleid: 'rtytry',
rolename: '',
userid: [['', 'ghdgf'], 'sds', ' '], // 此处测试多维数组、带空格的字符串
username: '刘二'
}
},
{
config_type: 2,
down_num: 3,
init_date: '2020-07-26',
roleid: 'klkklj',
rolename: '',
userid: 'asdfadsf',
username: '王五',
other: false,
getName: function () {
return this.username
}
}
]
解决办法:
/**
* 数据中有字段为空的处理, 字段为空(null、字符串为空,带空格字符串)都改为'--'
* @param {*} initialData 数据类型包含基础类型值(布尔型数据保留)、数组、对象
*/
export const formateNullFieldData = initialData => {
const isEmpty = val => {
// null、字符串为空(注意存在数值为0时),带空格字符串,后台处理成的'-'
if (!String(val) || String(val) === 'null' || !String(val).replace(/\s+/g, '') || val === '-') {
return '--'
}
return val
}
if (initialData instanceof Array) {
// 当数据为数组时
initialData.forEach((val, key, array) => {
array[key] = formateNullFieldData(val)
})
} else if (initialData instanceof Object) {
// 当数据为对象时
for (let pro in initialData) {
initialData[pro] = formateNullFieldData(initialData[pro])
}
} else {
// 当数据为基础类型时
initialData = isEmpty(initialData)
}
return initialData
}
使用:formateNullFieldData(tempArr)