表データからツリー構造への変換(深さ優先探索)
できた。
深さ優先探索を使っています。
まずルートとなる要素を確定し、その要素に子要素を追加し、その子要素の子要素を…を繰り返しています。
昨日やってたのは、終端要素から親となる要素を追加していくという方法でしたが、
うまいこといかんかったので、今日は逆に子要素を追加していく方法でトライしました。
1時間もかからなかったかな。
class Converter { convertToTree(nodes) { const rootNodes = nodes.filter(node => !node.parentID) const rootNode = rootNodes[0] rootNode.children = this.buildChildNode(rootNode, nodes) console.log('result', rootNode) } /** * Depth first search * @param {*} parentNode * @param {*} nodes */ buildChildNode(parentNode, nodes) { const parentNodeID = parentNode.id const childNodes = [] nodes.forEach(node => { if (node.parentID === parentNodeID) { childNodes.push(node) if (node.hasChild) { node.children = this.buildChildNode(node, nodes) } } }) return childNodes } }