上一次我们写了一个函数,将扁平化的数组转为非扁平化。这次我们继续,将上次最终的结果,进行扁平化处理。
首先准备出上次的最终结果,作为需要处理的数据:
1 | const unflattenedArr = [ |
想把复杂的结构扁平化,就是一层一层递归输出。写法还算简单:
1 | const flatten = arr => { |
通过这么处理,所有的节点都可以扁平化了。但是有个问题,没有父节点 pid
信息,这个需要再补充。
每次递归时候,必须带上父节点信息,否则怎么知道属于那个节点呢?所以函数签名(参数)也需要改造下:
1 | ---- const flatten = arr => { |
这样就搞定了。
本文代码见此:Github