处理对象参数-如果对象中的该项为空则删除该项
前言
当我们传递参数时,对象中的某一项可能为空,虽然说传递过去,数据库可以不接收,但是作为未来的“高级+全栈”工程师,怎么能干这样的事呢,所以就需要删除对象中为空的项。
一、方法封装
// 如果对象的每一项为空则删除该项
filterParams(obj){
let _newPar = {};
for (let key in obj) {
//如果对象属性的值不为空,就保存该属性(,如果属性的值为0,保存该属性。如果属性的值全部是空格,属于为空。)
if ((obj[key] === 0 || obj[key]) && obj[key].toString().replace(/(^\s*)|(\s*$)/g, '') !== '') {
//记录属性
_newPar[key] = obj[key];
}
}
//返回对象
return _newPar;
}
二、react项目请求前处理参数调用
getAndqueryTable(source) {
var { keyWord,position,companyName,schoolName,education,workingStart,workingEnd,pageNo,pageSize,recommendTable } = this.state
var params = {
keyWord,
position,
companyName,
schoolName,
education,
workingStart,
workingEnd,
pageNo,
pageSize,
source,
}
// 参数过滤
params = this.filterParams(params)
talentTable(params).then(res => {
if (res.code == 'success') {
var dateSource = res.data.rows
// 将搜索到的总条数开放出去给搜索时的总条数使用
var searchTotal = res.data.total
if (recommendTable) {//推荐列表
var recTotal = res.data.total
this.setState({
recTotal
})
}else {
var newTotal = res.data.total
this.setState({
newTotal
})
}
dateSource.forEach(item => {
// 处理教育
item.eduJson = (item.eduJson? JSON.parse(item.eduJson) : [])
// 处理工作
item.jobJson = (item.jobJson? JSON.parse(item.jobJson) : [])
// 处理列key
item.key = item.id
});
this.setState({
dateSource,
searchTotal
})
}
})
}
三、效果演示
四、附赠-判断对象是否为空
// 判断对象是否为空
isEmptyObject(obj) {
for (var key in obj){
return false;//返回false,不为空对象
}
return true;//返回true,为空对象
}
总结
哇哦,香不香~~~