Javascript 多个过滤器的参数
我在尝试将参数设置为URL以筛选表时遇到问题 我创建了一个可重用的方法来处理这个问题,但当我有多个对象用于设置参数时,我遇到了问题。。。下面是一个例子 我的情妇看起来像这样Javascript 多个过滤器的参数,javascript,angular,Javascript,Angular,我在尝试将参数设置为URL以筛选表时遇到问题 我创建了一个可重用的方法来处理这个问题,但当我有多个对象用于设置参数时,我遇到了问题。。。下面是一个例子 我的情妇看起来像这样 defaultParams = { page: '0', pageSize: '5', sortBy: 'username', sortByType: 'ASC', search: null, filter: { enabled: null, activ
defaultParams = {
page: '0',
pageSize: '5',
sortBy: 'username',
sortByType: 'ASC',
search: null,
filter: {
enabled: null,
activated: null,
student: { --> this obj
id: 1
},
role: { --> this ob
role: 'ADMIN'
}
}
};
?page=0&pageSize=5&sortBy=username&sortByType=ASC&filter=student.id:1,role.role:ADMIN
?page=0&pageSize=5&sortBy=username&sortByType=ASC&filter=student.id:1,student.role.role:ADMIN
问题是当我在filter obj中有多个对象时,你们可以看到
我的URL需要如下所示
defaultParams = {
page: '0',
pageSize: '5',
sortBy: 'username',
sortByType: 'ASC',
search: null,
filter: {
enabled: null,
activated: null,
student: { --> this obj
id: 1
},
role: { --> this ob
role: 'ADMIN'
}
}
};
?page=0&pageSize=5&sortBy=username&sortByType=ASC&filter=student.id:1,role.role:ADMIN
?page=0&pageSize=5&sortBy=username&sortByType=ASC&filter=student.id:1,student.role.role:ADMIN
但我是这样的
defaultParams = {
page: '0',
pageSize: '5',
sortBy: 'username',
sortByType: 'ASC',
search: null,
filter: {
enabled: null,
activated: null,
student: { --> this obj
id: 1
},
role: { --> this ob
role: 'ADMIN'
}
}
};
?page=0&pageSize=5&sortBy=username&sortByType=ASC&filter=student.id:1,role.role:ADMIN
?page=0&pageSize=5&sortBy=username&sortByType=ASC&filter=student.id:1,student.role.role:ADMIN
我来这里也是为了角色学生-->STUDENT.role.role:ADMIN
而不是role.role:ADMIN
这里是,在控制台中您可以看到问题
如何处理
Thnx
StackSnippet
const params=defaultParams={
页面:“0”,
页面大小:“5”,
排序方式:“用户名”,
sortByType:'ASC',
搜索:空,
过滤器:{
已启用:空,
已激活:空,
学生:{/-->这个obj
身份证号码:1
},
角色:{/-->此ob
角色:'管理员'
}
}
};
常数isObject=o=>{
返回(!!o)&(o.constructor==对象);
}
常量buildFilterParams=obj=>{
让filterParams='';
const keyCount=Object.keys(obj).length;
让计数=1;
用于(obj中的常量键){
常量值=对象[键];
如果(!isObject(值)){
if(值!==null&&value!==未定义){
filterParams+=`${key}:${value}`;
如果(键计数>计数){
filterParams+=',';
}
}
计数=计数+1;
}否则{
filterParams+=`${key}.`;
console.log(过滤器参数)
buildFilterParams(值);
}
}
};
buildFilterParams(params)
问题在于嵌套循环,它仍保留上一个循环值并将其绑定到下一个结果。
解决这个问题的几种方法
我给你编了一段。请将其设置为**@mplungjan**请检查并更新您的想法。如果您需要更好的实施方法,请告诉我。