Javascript 如何在JS中应用多个过滤器和多个值?
我有2个值,我想过滤这些值在我的数据中。我怎么做 我想过滤ID 1和ID 2Javascript 如何在JS中应用多个过滤器和多个值?,javascript,arrays,filter,Javascript,Arrays,Filter,我有2个值,我想过滤这些值在我的数据中。我怎么做 我想过滤ID 1和ID 2 data: [ {id: 1, name: "Carl", city: "New York"}, {id: 2, name: "Anna", city: "New York"}, {id: 3, name: "Carl", city: "Sydney"} ] filterValue: [1, 2] 使用fil
data: [
{id: 1, name: "Carl", city: "New York"},
{id: 2, name: "Anna", city: "New York"},
{id: 3, name: "Carl", city: "Sydney"}
]
filterValue: [1, 2]
使用
filter
和indexOf
使用另一个数组筛选数组中的值
var数据=[{
id:1,
姓名:“卡尔”,
城市:“纽约”
},
{
id:2,
姓名:“安娜”,
城市:“纽约”
},
{
id:3,
姓名:“卡尔”,
城市:“悉尼”
}
]
var filterValue=[“Carl”];
console.log(data.filter)(函数(e){
返回filterValue.indexOf(e.name)!=-1
}))
您可以在数组上使用.filter():
var data = [{
id: 1,
name: "Carl",
city: "New York"
},
{
id: 2,
name: "Anna",
city: "New York"
},
{
id: 3,
name: "Carl",
city: "Sydney"
}
]
var filteredData = data.filter(function(data) {
return data.id == 1 || data.id == 2;
})
您可以将.filter()
与一起使用.includes()
来检查obj.filterValue
是否具有当前对象id
,如果没有,您可以保留数组,如果有,它将从新数组中删除它:
const obj={data:[{id:1,姓名:“卡尔”,城市:“纽约”},{id:2,姓名:“安娜”,城市:“纽约”},{id:3,姓名:“卡尔”,城市:“悉尼”}],过滤值:[1,2]};
const res=obj.data.filter(({id})=>!obj.filterValue.includes(id));
控制台日志(res)代码>您可以使用此实用程序函数,它获取要筛选的值数组和要筛选的对象的键:
const data=[{id:1,名称:'Carl',城市:'New York'},{id:2,名称:'Anna',城市:'New York'},{id:3,名称:'Carl',城市:'Sydney'}]
常量filterData=(d,f,k)=>data.filter(o=>f.includes(o[k]))
log(filterData(数据,[1,2],'id'))
log(filterData(data,['Carl'],'name'))
用id
作为键,从数据
生成一个哈希映射
let数据=[
{id:1,名字:“卡尔”,城市:“纽约”},
{id:2,姓名:“安娜”,城市:“纽约”},
{id:3,名字:“卡尔”,城市:“悉尼”}
];
设map1=newmap(data.Map(e=>[e.id,e]);
设filterValue=[1,2];
让output=filterValue.map(e=>map1.get(e));
控制台日志(输出)代码>相同的解决方案在名称字段中有效吗@ellipssuppose filterValue=[“Carlos”];然后运行。它将返回一个空数组,因为没有匹配项@为什么在这里使用三元数?不需要-只需返回布尔值-过滤器接受布尔值返回。在您的代码中,e的计算结果为true。如果我需要id 1,2,3,4,5,6,7,8,9,11,22,33,44,55667,88怎么办?您是否要为所有这些项编写or条件?这个答案非常具体,尽管我们可以使用数组来满足上述要求。OP想要名称Too您想要保留或删除filterValue
中的项吗?