树形结构数据处理
需求
把 待处理数据 中的数据跟 源数据 中比较,只要某项的子元素个数少了就删除那一项。
数据
源数据
[
{
"level": 1,
"id": "1",
"parentId": "0",
"children": [
{
"level": 2,
"id": "1-1",
"parentId": "1"
},
{
"level": 2,
"id": "1-2",
"parentId": "1",
"children": [
{
"level": 3,
"id": "1-2-1",
"parentId": "1-2"
},
{
"level": 3,
"id": "1-2-2",
"parentId": "1-2"
}
]
},
{
"level": 2,
"id": "1-3",
"parentId": "1",
"children": [
{
"level": 3,
"id": "1-3-1",
"parentId": "1-3"
},
{
"level": 3,
"id": "1-3-2",
"parentId": "1-3"
}
]
}
]
},
{
"level": 1,
"id": "2",
"parentId": "0",
"children": [
{
"level": 2,
"id": "2-1",
"parentId": "2",
"children": [
{
"level": 3,
"id": "2-1-1",
"parentId": "2-1"
},
{
"level": 3,
"id": "2-1-2",
"parentId": "2-1"
}
]
},
{
"level": 2,
"id": "2-2",
"parentId": "2",
"children": [
{
"level": 3,
"id": "2-2-1",
"parentId": "2-2"
},
{
"level": 3,
"id": "2-2-2",
"parentId": "2-2"
}
]
}
]
}
]
待处理数据
[
{
"level": 1,
"id": "1",
"parentId": "0"
},
{
"level": 2,
"id": "1-1",
"parentId": "1"
},
{
"level": 2,
"id": "1-2",
"parentId": "1"
},
{
"level": 3,
"id": "1-2-1",
"parentId": "1-2"
},
{
"level": 1,
"id": "2",
"parentId": "0"
},
{
"level": 2,
"id": "2-2",
"parentId": "2"
},
{
"level": 3,
"id": "2-2-1",
"parentId": "2-2"
}
]
处理后数据的样例
[
// 这项本身就没有子元素,所以不处理
{
"level": 2,
"id": "1-1",
"parentId": "1"
},
// 这项的父元素及祖父元素都删除了,因为兄弟元素少了所以删除了父元素,因为删除了父元素,祖父元素的子元素就少了,所以删除了祖父元素
{
"level": 3,
"id": "1-2-1",
"parentId": "1-2"
},
{
"level": 3,
"id": "2-2-1",
"parentId": "2-2"
}
]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
遍历,比较,处理,参考:使用递归遍历并转换树形数据(以 TypeScript 为例)