具体化されたカテゴリ パスの配列からカテゴリ オブジェクトの配列を作成しようとしています。
var data = [
'Business / Finance',
'Business / Management',
'Business / Management / Leadership',
'Business / Team / Leadership'
];
// Expected results:
var result = [
{ name: 'Business', trail: null, path: 'Business' },
{ name: 'Finance', trail: 'Business', path: 'Business / Finance' },
{ name: 'Management', trail: 'Business', path: 'Business / Management' },
{ name: 'Leadership', trail: 'Business / Management', path: 'Business / Management / Leadership' },
{ name: 'Team', trail: 'Business', path: 'Business / Team / Leadership' },
{ name: 'Leadership', trail: 'Business / Team', path: 'Business / Team / Leadership' }
];
ご覧のとおり、Business
他のすべてはサブカテゴリにすぎないため、一度だけ存在する必要があります。ただし、Leadership
両方とも異なる構造にあるため、2 回存在する必要があります。
フィドルhttp://jsfiddle.net/9uC9Z/をチェックアウトすると、それBusiness
が 4 回存在することがわかります。
どうすれば問題を解決できますか?
結果のコードが非常に複雑な場合は、コード コメントをいただければ幸いです。
編集:配列
内の実体化されたパス文字列は、data
本のカテゴリ階層を反映しています。例は次のとおりです。
{
title: 'Leadership 101',
author: 'John Smith',
category: 'Business / Management / Leadership'
}
それはちょうど1冊の本を表しています。ここで、すべてのカテゴリに対して 1 つの MongoDB ドキュメントを作成したいと考えています。上記のサンプル本は、3 つのカテゴリ オブジェクト (ビジネス、管理、リーダーシップ) を生成します。ただし、カテゴリ (またはサブカテゴリ) オブジェクト/ドキュメントが既に存在する場合は、別のものを作成する必要はありません。
result
したがって、MongoDB コレクション内に格納するカテゴリ オブジェクトを表します。(カテゴリ間の関係を追加しますが、それは現在の問題の一部ではありません。)