Javascript 如何在JS中应用多个过滤器和多个值?

Javascript 如何在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

我有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]

使用
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
中的项吗?