javascript - 按指定的depth返回树形JSON结构
本文介绍了javascript - 按指定的depth返回树形JSON结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
有一段JSON,如下:
按树状层级来说,是3级,我现在希望返回前2级,第3级丢掉,要如何用javascript代码来实现呢?
原来的结构:
[{
'id': 1,
'title': 'node1',
'nodes': [
{
'id': 11,
'title': 'node1.1',
'nodes': **[
{
'id': 111,
'title': 'node1.1.1',
'nodes': []
}**
]
},
{
'id': 12,
'title': 'node1.2',
'nodes': []
}
]
}, {
'id': 2,
'title': 'node2',
'nodes': [
{
'id': 21,
'title': 'node2.1',
'nodes': []
},
{
'id': 22,
'title': 'node2.2',
'nodes': []
}
]
}, {
'id': 3,
'title': 'node3',
'nodes': [
{
'id': 31,
'title': 'node3.1',
'nodes': []
}
]
}]
处理后的结构:
[{
'id': 1,
'title': 'node1',
'nodes': [
{
'id': 11,
'title': 'node1.1',
**'nodes': []**
},
{
'id': 12,
'title': 'node1.2',
'nodes': []
}
]
}, {
'id': 2,
'title': 'node2',
'nodes': [
{
'id': 21,
'title': 'node2.1',
'nodes': []
},
{
'id': 22,
'title': 'node2.2',
'nodes': []
}
]
}, {
'id': 3,
'title': 'node3',
'nodes': [
{
'id': 31,
'title': 'node3.1',
'nodes': []
}
]
}]
解决方案
树的操作用递归比较方便
depth 为保留的层数,注意是对 'id': 1,
那层的结点调用。
function removeNode (root, depth) {
if (typeof root !== 'object' || typeof depth !== 'number' || !Array.isArray(root.nodes)) { return root }
if (depth < 1) { return {} }
if (depth === 1) {
root.nodes = []
} else {
root.nodes.forEach(node => {
removeNode(node, depth - 1)
})
}
return root
}
这篇关于javascript - 按指定的depth返回树形JSON结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文