现象
在开发中遇到这样一种现象:在多条件搜索的项目中,有些接口不判断有的条件传空的情况,导致有的条件有值有的条件传空的时候查不出结果;
举例
按照name、age、sex等条件去查询用户,如果参数是{name:‘tom’}是可以查询到数据的;但是如果参数是{name:‘tom’,age:’’},就查询不到数据,因为没有用户的age为空;作为前端我认为,传空应该视为没传这个条件,两种情况查询到的数据应该是一样的;因为前端搜索可能有好多项,可能是一起获取的查询条件,没有的默认就是空;为了解决这个问题,前端就需要把拿到的搜索条件统一处理一下,去掉里面的空键
解决方法
// 这种方法eslint会报错提示用下面的方法来替代
const newSearchParams = {};
let searchParams = { name: 'tom', age: '' };
// for (key in searchParams) {
// if (searchParams[key]) {
// newSearchParams[key] = searchParams[key];
// }
// }
Object.keys(searchParams).forEach((key) => {
if (searchParams[key]) {
newSearchParams[key] = searchParams[key];
}
});
console.log(newSearchParams)