北京城区新添13处公租自行车点 今年... | 06-30 |
汇丰维持六福买入评级 目标价下调|n... | 10-22 |
“国考”热度不减 湖南职位最高竞争... | 11-25 |
浅谈当下的网站SEO,SEOer应该怎么做 | 09-12 |
警惕债券市场高杠杆操作风险|别用下... | 11-02 |
郑嘉颖否认向23岁女友求婚 斥港媒胡... | 07-07 |
上海迪士尼启动千人招聘 多为一线服... | 11-27 |
小伙网上花600元买2条小蛇 警察找上... | 07-27 |
国平:56个民族是一个命运共同体|八... | 10-12 |
日本方形西瓜开始发售 每只合人民币... | 07-04 |
前面已经实现了在Java中生成行政区树(参考博客),其实也可以在JavaScript中生成树,由于JavaScript是弱类型,从某种程度上来说,JavaScript比Java更容易构建树。在JavaScript中只要生成zTree或者Ext Tree支持的数据格式即可。
/** * 构建树,如果传入的参数有多个跟节点,则返回数组,如果只有一个根节点,则返回根节点。 * * @param nodes {Array} 树节点数组,节点格式{id: 1, parentId: null, text: '', children: [], leaf: true} * @return 返回树的根节点 */ function buildTree(nodes){ //如果传入的参数不是数组或者是空数组,则退出 if(Object.prototype.toString.call(nodes) !== '[object Array]' || nodes.length === 0){ return null; } var i, j, child, parent, hasParent, //节点数量 len = nodes.length, //顶级节点数组,如果只有一个顶级节点,该数组只有一个元素,并且该顶级节点是根节点。 tops = []; //如果只有一个节点,则返回该节点 if(len === 1){ reutrn nodes[0]; } //进行两轮遍历,构造树的父节点和子节点 for(i = 0; i < len; i++){ child = nodes[i]; hasParent = false; //如果child没有父节点,则child是顶级节点 if(!child.parentId){ tops.add(child); continue; } for(j = 0; j < len; j++){ parent = nodes[j]; if(parent.id === child.parentId){ //添加子节点 parent.children.push(child); parent.leaf = false; hasParent = true; break; } } //如果child没有父节点,则child是顶级节点 if(!hasParent){ tops.add(child); } } //如果只有一个顶级节点,则返回该节点,否则返回数组。 return tops.length === 1 ? tops[0] : tops; }企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:光谷网站建设 http://www.ggwzjs.com.cn