【发布时间】:2017-07-28 02:20:24
【问题描述】:
我了解如何仅使用一个关键字过滤对象数组中的单个属性。我目前有一个过滤器服务,它使用单个关键字通过单个属性过滤出对象数组,但我无法弄清楚如何在对象数组上使用多个关键字来做到这一点。这是我目前所拥有的:
我有一个接口 Restaurant,它就是对象数组:
export interface Restaurant {
id: number;
name: string;
tags: string[];
}
现在我通过 name 属性进行过滤,我想做的是通过 tags 属性的数组以及服务类中的一组首选项来过滤餐馆。
@Injectable()
export class PreferencesFilterService {
getFilteredRestaurants(list: Restaurant[]): Restaurant[] {
return list.filter(function(restaurant){
restaurant.name === "Mexican";
});
}
}
我需要它像下面的伪代码一样执行:
@Injectable()
export class PreferencesFilterService {
preferencesList: string[];
getFilteredRestaurants(list: Restaurant[]): Restaurant[] {
return list.filter(function(restaurant){
//loop through each restaurants "tags" attribute
//return an array of restaurants that pass the following test:
// --> The restaurant's tags array strings match with at least 1
// of the strings in the preferencesList array
});
}
}
我对 javascript、Typescript 和 Web 开发作为一个整体非常陌生,因此非常感谢任何正确方向的帮助或指示。非常感谢您的宝贵时间。
编辑:
我认为我的问题不清楚,在内部循环中我需要循环并检查首选项列表中的每个值,但我不想将它与“restaurant.name”属性进行比较,我想将其与所有“标签”数组属性中的值。很抱歉造成误会。
【问题讨论】:
标签: javascript typescript filter callback