1つのキーワードだけを持つオブジェクトの配列内の単一の属性をフィルタリングする方法を理解しています。私は現在、単一のキーワードを使用して単一の属性でオブジェクトの配列をフィルタリングするフィルタサービスを持っていますが、オブジェクトの配列上で複数のキーワードを使用してそれを行う方法を理解することはできません。これは私がこれまで持っているものです。Typescript複数のキーワードによる文字列の配列を持つオブジェクトの配列
私はオブジェクトの配列が何であるかであるインターフェースのレストランがあります。
export interface Restaurant {
id: number;
name: string;
tags: string[];
}
今私は、name属性でフィルタを持っているものを、私が何をしたいのかさサービスクラスのプリファレンスの配列を使用して、タグの配列の属性によってレストランをフィルタリングします。
@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、活字体、およびWeb開発に非常に新しいですので、右方向に任意のヘルプまたはポインタう大変感謝します。あなたのお時間をありがとうございました。
編集:
私の質問は明確ではなかったと思いますが、内側のループでループして、プリファレンスリストの各値をチェックする必要がありますが、それを "restaurant.name"属性、私はそれを "tags"配列属性のすべての値と比較したいと思います。ミスコミュニケーションのために申し訳ありません。あなたは、私が好みのリストにメキシコとブラジルを置くこの
@Injectable()
export class PreferencesFilterService {
var preferencesList: string[] = ['Mexico', 'Brazil'];
getFilteredRestaurants(list: Restaurant[]): Restaurant[] {
return list.filter(function(restaurant) {
for (let tag in restaurant){
if (preferencesList.indexOf(restaurant[tag])!=-1){
return true;
}
}
return false;
});
}
}
ようにそれを行うことができます
私の質問は不明で、内部のループではループして、あなたがやっているような設定リストをチェックする必要がありますが、私はそれを "restaurant.name"属性と比較したくありませんこれを "tags"配列属性のすべての値と比較します。ミスコミュニケーションのために申し訳ありません。 – Biggytiny
あなたのアプリにAngularJSを使用していますか? –
はい私は現在AngularJSを使用しています – Biggytiny