js文章列表的树形结构输出

发布时间:2017-3-23 10:26:34 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"js文章列表的树形结构输出 ",主要涉及到js文章列表的树形结构输出 方面的内容,对于js文章列表的树形结构输出 感兴趣的同学可以参考一下。

文章表设计成这样了

后端直接给了无任何处理的json数据,现在要前端实现树形结构的输出,其实后端处理更简单写,不过既然来了就码出来

var doclist = [{    "id": 1,    "level": 1,    "parent_id": 0,    "title": "A"}, {    "id": 2,    "level": 2,    "parent_id": 1,    "title": "A1"}, {    "id": 333,    "level": 2,    "parent_id": 1,    "title": "A2"}, {    "id": 10,    "level": 3,    "parent_id": 5,    "title": "B2"}, {    "id": 7,    "level": 3,    "parent_id": 2,    "title": "A3"}, {    "id": 4,    "level": 1,    "parent_id": 0,    "title": "B"}, {    "id": 5,    "level": 2,    "parent_id": 4,    "title": "B1"}, {    "id": 11,    "level": 2,    "parent_id": 4,    "title": "B3"}, {    "id": 12,    "level": 3,    "parent_id": 11,    "title": "B4"}, {    "id": 133,    "level": 3,    "parent_id": 11,    "title": "B5"}];function getDocTree(doclist) {    var findDoc = function(doc_id) {        for (var i = 0; i < doclist.length; i++) {            if (doclist[i].id == doc_id) {                return doclist[i];            }        }    }    var getSeqnum = function(doc_id) {        var doc = findDoc(doc_id)        if (doc.level == 1) {            return '' + doc_id        } else {            return getSeqnum(doc.parent_id) + ',' + doc_id;        }    }    for (var i = 0; i < doclist.length; i++) {        var doc = doclist[i]        doc.seqNum = getSeqnum(doc.id)    }    return doclist.sort(function(a, b) {        var al = a.seqNum.split(','),            bl = b.seqNum.split(',');        var minLen = al.length > bl.length ? bl.length : al.length;        var result = 0        for (var i = 0; i < minLen; i++) {            if (al[i] > bl[i]) {                result = 1;                break;            }            if (al[i] < bl[i]) {                result = -1;                break;            }        }        if (result == 0 && al.length > bl.length) result = 1;        if (result == 1 && al.length > bl.length) result = 1;        if (result == 1 && al.length == 1) result = 1;        if (result == 1 && al.length > 1 && al.length < bl.length) result = -1;        return result;    })}function getDocTree2(doclist) {    //get max level    var maxLevel = 1;    for (var i = 0; i < doclist.length; i++) {        var doc = doclist[i]        if (parseInt(doc.level) > maxLevel) {            maxLevel = parseInt(doc.level)        }    }    //loop level    var parentDoc = []    for (var L = 1; L <= maxLevel; L++) {        var subDoc = []        for (var i = 0; i < doclist.length; i++) {            var doc = doclist[i]            if (doc.level == L) {                parentDoc.push(doc)            }

上一篇:visio studio2008 删除最近的项目
下一篇:[C#] 了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款