JSを使用して複数の属性を除外するマルチフィルター関数を作成するにはどうすればよいですか?
Aug 21 2020
フィルタリングするオブジェクトの配列
[
{
"name": "Apple",
"age": 24,
"model": "Android",
"status": "Under development",
},
{
"name": "Roboto",
"age": 24,
"model": "Apple",
"status": "Running",
},
.
.
.
.
]
JSフィルターメソッドを使用して複数のパラメーターを使用して配列をフィルター処理する必要があります。私は部分的な解決策を持っていて、期待される出力を得ることができませんでした(それに固執しました)。
ここで、フィルターは1つの属性に対して複数の値でも機能する必要があります。例:age = 54,23またはmodel = Android、Appleなど。
簡単に言うと、eコマースサイトのようにフィルターの動作を模倣しようとしています。このサイトでは、製品のすべての属性と顧客が選択したタグを比較して、フィルター処理された製品のリストを出力できます。
どんな助けでもかなりです。ありがとう!
回答
3 trincot Aug 21 2020 at 10:49
フィルタ条件をデータ配列内のオブジェクトと同じようにフォーマットするが、値は可能な値の配列である場合、filter
次のようにメソッドを使用できます。
let data = [
{
"name": "Apple",
"age": 24,
"model": "Android",
"status": "Under development",
}, {
"name": "Roboto",
"age": 24,
"model": "Apple",
"status": "Running",
}, {
"name": "Samsung",
"age": 26,
"model": "Blueberry",
"status": "Running",
},
];
let filter = {
"name": ["Roboto", "Ericsson"],
"age": [22, 24, 26],
};
let res = data.filter(obj =>
Object.entries(filter).every(([prop, find]) => find.includes(obj[prop])));
console.log(res);