回答編集履歴

2

ソース修正

2021/09/26 16:44

投稿

退会済みユーザー
test CHANGED
@@ -162,7 +162,7 @@
162
162
 
163
163
  ```
164
164
 
165
- としていますが、ここは再帰を使わずとも、度`nodesMap`の各キーに対する値のすべてを `for ・・・ of ・・・` でループさせれば、全ノードを走査できるので、以下でよかったです。
165
+ としていますが、ここは再帰を使わずとも、もう一度`nodesMap`の各キーに対する値のすべてを `for ・・・ of ・・・` でループさせれば、全ノードを走査できるので、以下でよかったです。
166
166
 
167
167
  ```javascript
168
168
 

1

ソース修正

2021/09/26 16:43

投稿

退会済みユーザー
test CHANGED
@@ -125,3 +125,59 @@
125
125
 
126
126
 
127
127
  ➡ [サンプル](https://codepen.io/i8086x/pen/YzQRXpd?editors=0012)
128
+
129
+
130
+
131
+
132
+
133
+ ----
134
+
135
+ **追記:**
136
+
137
+
138
+
139
+ ひとつ追記しておきます。
140
+
141
+
142
+
143
+ 上のコードでは、ツリーを構築した後に、各ノードの `parent` プロパティを削除するために、再帰関数を使って
144
+
145
+ ```javascript
146
+
147
+ // 各ノードのparentプロパティが不要になったので削除
148
+
149
+ (function deleteParentRecursively(list) {
150
+
151
+ list.forEach(node => {
152
+
153
+ delete node.parent;
154
+
155
+ if (node.children.length)
156
+
157
+ deleteParentRecursively(node.children);
158
+
159
+ });
160
+
161
+ })(new_test_list);
162
+
163
+ ```
164
+
165
+ としていますが、ここは再帰を使わずとも、再度`nodesMap`の各キーに対する値のすべてを `for ・・・ of ・・・` でループさせれば、全ノードを走査できるので、以下でよかったです。
166
+
167
+ ```javascript
168
+
169
+ // 各ノードのparentプロパティが不要になったので削除
170
+
171
+ for (const node of nodesMap.values()) {
172
+
173
+ delete node.parent;
174
+
175
+ }
176
+
177
+ ```
178
+
179
+ ➡ [サンプル](https://codepen.io/i8086x/pen/powQEPM?editors=0012)
180
+
181
+
182
+
183
+ (ただし、このツリー構築作業用のマップ`nodesMap`が無くなってしまった後に、ツリーの全ノードをたどるには、`deleteParentRecursively`でやっているような再帰が分かり易いと思います。)