製品グリッドフィルタリングシステムを作成しようとしています。 JSONオブジェクトの.filter()
を呼び出すと、私が探している結果が得られます。.filter()を使用したAND/ORロジック
const filteredProducts = allProducts.filter((a) => {
// return brown or blue products in with omnis tag
const prodTags = a.tags;
return (
prodTags.includes('brown') && prodTags.includes('single-eye') && prodTags.includes('happy') ||
prodTags.includes('brown') && prodTags.includes('single-eye') && prodTags.includes('angry') ||
prodTags.includes('brown') && prodTags.includes('two-eyes') && prodTags.includes('happy') ||
prodTags.includes('brown') && prodTags.includes('two-eyes') && prodTags.includes('angry') ||
prodTags.includes('blue') && prodTags.includes('single-eye') && prodTags.includes('happy') ||
prodTags.includes('blue') && prodTags.includes('single-eye') && prodTags.includes('angry') ||
prodTags.includes('blue') && prodTags.includes('two-eyes') && prodTags.includes('happy') ||
prodTags.includes('blue') && prodTags.includes('two-eyes') && prodTags.includes('angry')
);
});
私はこの動的な方法を考えるのに苦労しています。私は、このロジックを任意の数のタグに対して自動的に生成できる関数を作成するように思えます。
私は(〜現在選択されたものである)、このようになりますフィルタリングシステムがあります。
-----------
Colors:
-----------
~ brown
gray
~ blue
pink
-----------
Eyes:
-----------
~ single-eye
~ two-eyes
-----------
Emotion:
-----------
~ happy
~ angry
sad
をカテゴリー間のロジックがあると。カテゴリの値間の論理はORです。私は、デカルト積配列を作成する関数セットアップを持っています。選択したフィルタ配列は次のようになります。
[
['brown', 'single-eye', 'angry'],
['brown', 'single-eye', 'happy'],
['brown', 'two-eyes', 'angry'],
['brown', 'two-eyes', 'happy'],
['blue', 'single-eye', 'angry'],
['blue', 'single-eye', 'happy'],
['blue', 'two-eyes', 'angry'],
['blue', 'two-eyes', 'happy']
]
これは私が立ち往生した場所です。私は動的に生成された配列を.filter()
内に統合し、||を使用する方法を理解できないようです。それに応じて& &。
ご協力いただきまして誠にありがとうございます。
ない結果が期待したもの、ありますか?質問に入力配列を含めることはできますか? – guest271314