私は多くの異なるcharパターンの配列を与えられています。data
を参照してください。データを階層型JSONフォームにネストして、サンバーストの可視化に挿入しようとしています。各パターンはn
文字で構成されていますが、下のパターンは8文字です。希望する結果を話すにはCharのシーケンスから階層JSON-d3.sunburst
- レベル0では、いくつのユニークな文字があるかを調べます。答え:['w'、 'm']。
- レベル1にあるすべての一意の文字を見つけてレベル2に移動し、パターンの終わりに達するまで末尾のユニークなパターンのサイズを計算します。
- 2番目のキー 'm'を2回繰り返します
- 結果を
children
のプロパティroot
に挿入します。
私は2レベルのコードを構築することができました。その後、多くのネストで深くなる可能性がありますが、非常にハードコードされ、理解するのは非常に難しいでしょう。誰かがこれを再帰的にやり直す方法や、それを解決する別のパターンを知っていますか?
所望の出力サンプル:
var root = {"name":"evt_seq","children":[{"name":"w","children":[{"name":"w","size":8},{"name":"k","size":1}]},{"name":"m","children":[{"name":"w","size":1}]}]}
2レベルのネスト(Nレベルのネスティングを探しては)
"use strict";
var data = [{"match": ["w", "w", "l", "w", "w", "w", "t", "w"]}, {"match": ["w", "k", "w", "A", "w", "w", "w", "w"]},
{"match": ["w", "w", "w", "w", "w", "w", "w", "w"]}, {"match": ["w", "w", "w", "w", "w", "w", "w", "w"]},
{"match": ["w", "w", "w", "w", "w", "w", "w", "w"]}, {"match": ["m", "w", "v", "v", "t", "m", "l", "m"]},
{"match": ["w", "w", "w", "l", "w", "w", "l", "l"]}, {"match": ["w", "w", "z", "w", "w", "m", "l", "w"]},
{"match": ["w", "w", "w", "w", "w", "w", "w", "w"]}, {"match": ["w", "w", "m", "w", "l", "w", "w", "w"]}
];
var root = {
"name": "evt_seq", children: []
};
// Get initial pattern
var groupedXs = _.groupBy(data, function (d) {
return d.match[0];
});
_.forEach(_.keys(groupedXs), function (d) {
let _x = groupedXs[d];
let _groupedXs = _.groupBy(_x, function (f) {
return f.match[1];
});
let _children = _.map(_.keys(_groupedXs), function (f) {
return {'name': f, 'size': _groupedXs[f].length}
});
root.children.push({"name": d, children: _children});
});
console.log(JSON.stringify(root));
help @Acey!ありがとうございます! – hotshotiguana