我正在尝试过滤看起来像这样的一组对象
const ELEMENT_DATA: PeriodicElement[] = [
{ position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H' },
{ position: 2, name: 'Helium', weight: 4.0026, symbol: 'He' },
{ position: 3, name: 'Lithium', weight: 6.941, symbol: 'Li' },
{ position: 4, name: 'Beryllium', weight: 9.0122, symbol: 'Be' },
{ position: 5, name: 'Boron', weight: 10.811, symbol: 'B' }
];
还有一个看起来像这样的数组
const values = [1,5];
我需要过滤ELEMENT_DATA
到NEW_VALUES
像这样
const NEW_VALUES: PeriodicElement[] = [
{ position: 1, name: 'Hydrogen', weight: 1.0079, symbol: 'H' },
{ position: 5, name: 'Boron', weight: 10.811, symbol: 'B' }
];
我尝试过使用这样的过滤器:
filterData(locationName: any) {
return ELEMENT_DATA.filter(object => {
return object.position === locationName;
});
}
但是我总是得到一个空数组。
答案 0 :(得分:2)
如果locationName
作为输入[1,5]
,则代码应如下所示:
filterData(locationName: number[]) {
return ELEMENT_DATA.filter(object => {
return locationName.includes(object.position);
});
}
答案 1 :(得分:0)
ELEMENT_DATA.filter(function (object) {
return locationName.indexOf(object.position) !== -1; // -1 means not present
});
或使用下划线JS,使用相同的谓词:
_.filter(ELEMENT_DATA, function (object) {
return locationName.indexOf(object.position) !== -1; // -1 means not present
}
如果您有权访问ES6集合或Set的polyfill。 在这里 locationName 应该是Set的类型
ELEMENT_DATA.filter(object=> locationName.has(object.position))