我有2个值,我想过滤数据中的那些值。我该怎么办?
我要过滤ID 1和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]
答案 0 :(得分:0)
您可以将.filter()
与.includes()
一起使用,以检查obj.filterValue
是否具有当前对象id
,如果没有,则可以保留数组,如果它会从新数组中删除它:
const obj = {data:[{id:1,name:"Carl",city:"New York"},{id:2,name:"Anna",city:"New York"},{id:3,name:"Carl",city:"Sydney"}],filterValue:[1,2]};
const res = obj.data.filter(({id}) => !obj.filterValue.includes(id));
console.log(res);
答案 1 :(得分:0)
您可以使用此实用程序功能,该功能使用要过滤的值的数组和要过滤的对象的键:
const data = [{ id: 1, name: 'Carl', city: 'New York' }, { id: 2, name: 'Anna', city: 'New York' }, { id: 3, name: 'Carl', city: 'Sydney' }]
const filterData = (d, f, k) => data.filter(o => f.includes(o[k]))
console.log(filterData(data, [1, 2], 'id'))
console.log(filterData(data, ['Carl'], 'name'))
答案 2 :(得分:0)
使用data
作为键,从id
中生成哈希映射。
let data = [
{id: 1, name: "Carl", city: "New York"},
{id: 2, name: "Anna", city: "New York"},
{id: 3, name: "Carl", city: "Sydney"}
];
let map1 = new Map(data.map(e=>[e.id,e]));
let filterValue = [1, 2];
let output = filterValue.map(e=>map1.get(e));
console.log(output);
答案 3 :(得分:-2)
使用 interface Option {
title: string;
isSelected?: boolean;
}
function myFunc(options: Option[]): void {}
const options: Option[] = [{title: 'Male', isSelected: true}, {title: 'Female'}, {title: 'Other'}];
const options2 = {...options};
myFunc(options);
myFunc(options2); // why isn't this an error ?
和filter
来过滤另一个数组中的值
indexOf
答案 4 :(得分:-2)
您可以在Array上使用.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;
})