Nested Details Demo

根据一个多级的.json文件,通过递归遍历对象属性,自动生成系列文章的左栏,索引页,以及水平导航栏。

手工设定目标

下面是通过硬编码所实现的左栏效果。

符合要求后,再编写代码。

生成左栏

生成索引页的Divs

主要区别在于将第一级的子节点单独分离出来作为标题。

生成水平导航栏

function flatURIs(currNode, mapArr) { let entries = Object.entries(currNode); for (let [key, value] of entries) { if (value instanceof Object) { flatURIs(value, mapArr); } else { mapArr.push({uri: key, label: value}); } } }

这是最简单的递归方式了,上面的递归算法均为其相应的变体。