回答編集履歴
2
ソース修正
answer
CHANGED
@@ -80,7 +80,7 @@
|
|
80
80
|
});
|
81
81
|
})(new_test_list);
|
82
82
|
```
|
83
|
-
としていますが、ここは再帰を使わずとも、
|
83
|
+
としていますが、ここは再帰を使わずとも、もう一度`nodesMap`の各キーに対する値のすべてを `for ・・・ of ・・・` でループさせれば、全ノードを走査できるので、以下でよかったです。
|
84
84
|
```javascript
|
85
85
|
// 各ノードのparentプロパティが不要になったので削除
|
86
86
|
for (const node of nodesMap.values()) {
|
1
ソース修正
answer
CHANGED
@@ -61,4 +61,32 @@
|
|
61
61
|
```
|
62
62
|
|
63
63
|
|
64
|
-
➡ [サンプル](https://codepen.io/i8086x/pen/YzQRXpd?editors=0012)
|
64
|
+
➡ [サンプル](https://codepen.io/i8086x/pen/YzQRXpd?editors=0012)
|
65
|
+
|
66
|
+
|
67
|
+
----
|
68
|
+
**追記:**
|
69
|
+
|
70
|
+
ひとつ追記しておきます。
|
71
|
+
|
72
|
+
上のコードでは、ツリーを構築した後に、各ノードの `parent` プロパティを削除するために、再帰関数を使って
|
73
|
+
```javascript
|
74
|
+
// 各ノードのparentプロパティが不要になったので削除
|
75
|
+
(function deleteParentRecursively(list) {
|
76
|
+
list.forEach(node => {
|
77
|
+
delete node.parent;
|
78
|
+
if (node.children.length)
|
79
|
+
deleteParentRecursively(node.children);
|
80
|
+
});
|
81
|
+
})(new_test_list);
|
82
|
+
```
|
83
|
+
としていますが、ここは再帰を使わずとも、再度`nodesMap`の各キーに対する値のすべてを `for ・・・ of ・・・` でループさせれば、全ノードを走査できるので、以下でよかったです。
|
84
|
+
```javascript
|
85
|
+
// 各ノードのparentプロパティが不要になったので削除
|
86
|
+
for (const node of nodesMap.values()) {
|
87
|
+
delete node.parent;
|
88
|
+
}
|
89
|
+
```
|
90
|
+
➡ [サンプル](https://codepen.io/i8086x/pen/powQEPM?editors=0012)
|
91
|
+
|
92
|
+
(ただし、このツリー構築作業用のマップ`nodesMap`が無くなってしまった後に、ツリーの全ノードをたどるには、`deleteParentRecursively`でやっているような再帰が分かり易いと思います。)
|