从后端获得数据格式化成树

只用DVA框架,用到antd 中级联选取,遇到后台数据并不是树状结构(后端数据最好是按照生成时间排序下),js处理成树状结构适用于 Cascader组件 结果如下:

[

{

"value": "58c0a3e1c8183a3d9fefd318",

"label": "板凳",

"_id": "58c0a3e1c8183a3d9fefd318",

"children": [

{

"value": "58c0a400c8183a3d9fefd31a",

"label": "方凳",

"_id": "58c0a400c8183a3d9fefd31a"

}

]

},

{

"value": "58c0a3dbc8183a3d9fefd317",

"label": "桌子",

"_id": "58c0a3dbc8183a3d9fefd317",

"children": [

{

"value": "58c0a3eec8183a3d9fefd319",

"label": "圆桌",

"_id": "58c0a3eec8183a3d9fefd319"

}

]

},

{

"value": "58c0a3d2c8183a3d9fefd316",

"label": "床",

"_id": "58c0a3d2c8183a3d9fefd316",

"children": [

{

"value": "58c0a410c8183a3d9fefd31b",

"label": "水床",

"_id": "58c0a410c8183a3d9fefd31b"

}

]

}

]

var data = JSON.parse('[{"_id":"58c0a410c8183a3d9fefd31b","qtext":"","valid":true,"updateAt":"2017-03-09T00:38:40.800Z","createAt":"2017-03-09T00:38:40.800Z","name":"水床","parentId":"58c0a3d2c8183a3d9fefd316","attributes":[],"note":"","cnum":"CATEGORY1703090007"},{"_id":"58c0a400c8183a3d9fefd31a","qtext":"","valid":true,"updateAt":"2017-03-09T00:38:24.594Z","createAt":"2017-03-09T00:38:24.594Z","name":"方凳","parentId":"58c0a3e1c8183a3d9fefd318","attributes":[],"note":"","cnum":"CATEGORY1703090006"},{"_id":"58c0a3eec8183a3d9fefd319","qtext":"","valid":true,"updateAt":"2017-03-09T00:38:06.272Z","createAt":"2017-03-09T00:38:06.272Z","name":"圆桌","parentId":"58c0a3dbc8183a3d9fefd317","attributes":[],"note":"","cnum":"CATEGORY1703090005"},{"_id":"58c0a3e1c8183a3d9fefd318","qtext":"","valid":true,"updateAt":"2017-03-09T00:37:53.247Z","createAt":"2017-03-09T00:37:53.247Z","name":"板凳","parentId":"","attributes":[],"note":"","cnum":"CATEGORY1703090004"},{"_id":"58c0a3dbc8183a3d9fefd317","qtext":"","valid":true,"updateAt":"2017-03-09T00:37:47.447Z","createAt":"2017-03-09T00:37:47.447Z","name":"桌子","parentId":"","attributes":[],"note":"","cnum":"CATEGORY1703090003"},{"_id":"58c0a3d2c8183a3d9fefd316","qtext":"","valid":true,"updateAt":"2017-03-09T00:37:38.494Z","createAt":"2017-03-09T00:37:38.494Z","name":"床","parentId":"","attributes":[],"note":"","cnum":"CATEGORY1703090002"}]');

var rst = [];

data.forEach(v => {

!v.parentId && rst.push({"value":v._id,"label":v.name,"_id":v._id});

})

data.forEach(v => {

v.parentId && getParent(v,rst);

})

function getParent(item, elems) {

if (!elems) {

return;

}

elems.forEach(v => {

if (v._id === item.parentId) {

v.children ? v.children.push({"value":item._id,"label":item.name,"_id":item._id}) : (v.children = [{"value":item._id,"label":item.name,"_id":item._id}]);

} else {

return getParent(item, v.children);

}

})

}

console.log(JSON.stringify(rst));

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,818评论 19 139
  • Correctness AdapterViewChildren Summary: AdapterViews can...
    MarcusMa阅读 12,872评论 0 6
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,855评论 0 17
  • 今天我们起的很早,因为每个周三都是我们走读的日子,老师在带着我们,大声的朗读,孝经。意思是我们应该要做一个孝顺父母...
    王云汉1阅读 1,666评论 0 0
  • 前段时间跟相熟的同事在办公室聊天,聊到有趣的地方,我忍不住笑出了声,正好被进门的直属领导撞了个正着。他对着跟我聊天...
    沐檩阅读 3,950评论 0 0

友情链接更多精彩内容