【发布时间】:2021-07-05 19:28:12
【问题描述】:
假设我有一个对象数组:
let users = [{
name: "Mark",
location: "US",
job: "engineer"
},
{
name: "Mark",
location: "US",
job: "clerk"
},
{
name: "Angela",
location: "Europe",
job: "pilot"
},
{
name: "Matthew",
location: "US",
job: "engineer"
}]
我有一个过滤器对象,其中包含我想要过滤数据的所有类别(每个键可以有多个值):
const filters = {
name: ["Mark", "Matthew"],
location: ["US"],
job: ["Engineer"]
}
根据这些过滤器和数据,预期的结果将返回:
[{name: "Mark", location: "US", job: "Engineer"}, {name: "Matthew", location: "US", job: "Engineer"}]
我尝试过过滤:
users.filter(user => {
for(let k in filters) {
if(user[k] === filters[k]) {
return true;
}
}
})
但是,此方法没有考虑到过滤器类别可能包含多个值,我可以通过以下方式处理:
filters[k][0] or filters[k][1]
但它不是动态的。
如果有人有任何意见,将不胜感激!谢谢。
【问题讨论】:
-
filters[k].includes(user[k])? -
而不是 users[k] ===filters[k] 尝试 filters[k].includes(users[k]) 它将在整个数组中寻找相似之处..我正在写这个虽然来自我的手机,但在语法上可能有点偏离
-
@Jonas heh 打败了我!实际上最好的答案
标签: javascript arrays object filtering