カテゴリを表す配列のグループがあります。各配列はカテゴリであり、配列の各項目はサブジェクトです。より複雑な配列:配列のアイテムの比較とカウント
4 Categories containing Subjects
['A','B','D']
['C']
['E','F']
['G','H','I','J']
私は別のアレイグループを持っています。これらのアイテムのそれぞれには、最大4つの可能なサブジェクトがあります。
3 Items containing Subjects
['A','F']
['E','I','C']
['E','F','G']
各カテゴリの項目数をカウントしたいと思います。この場合、結果は次のようになります。
Total Items: 3
Category 1: 1
Category 2: 1
Category 3: 3
Category 4: 2
3つの項目があり、そのうちのいくつかは複数のカテゴリに分類されています。私のアイテムの中には、1つのカテゴリに2つのサブジェクトがあり、それが私が犯しているところです。私の結果は、以下のとおりです。
Total Items: 3
Category 1: 1
Category 2: 1
Category 3: 4
Category 4: 2
私の3番目の項目は、同じカテゴリ、Eで2つの科目を持っており、私が試した何F.
ので、カテゴリ3のための私のカウントが1でオフになって
categories = [
{ name: string, subjects: string[], count: number }
]
アイテムが幾分類似している:
参考は、カテゴリは、オブジェクトの配列であります
items = [
{ subjects: Subject[] }
]
と被写体だけです:
{ id: string, name: string }
これは私が微調整するために必要なものです:
categories.map(category =>
category.subjects.map(categorySubject => {
if(items.subjects.map(itemSubject => itemSubject.id)
.some(val => itemSubject.indexOf(val) === 0)) {
category.count++;
}
}));
私は私がいくつかと、右方向に向かっていたと思ったが、私が見つける必要がありますカテゴリ内に複数の科目がある項目を2回カウントしないで、項目科目がカテゴリにあるかどうかを確認する方法です。私はそれが私のアプローチであることを知っています。アイテムのフォーマット方法を変更することはできません(はい、本当に文字列です)が、より良い方法があればカテゴリを変更できます。