在以下代码示例中,我们可以使用递归函数来保持使用 flatten 函数时的一致的 parentId/id 关系。
def flatten(data, parent_id=None):
flat_data = []
for item in data:
item['parentId'] = parent_id
flat_data.append(item)
if 'children' in item:
flat_data.extend(flatten(item['children'], item['id']))
return flat_data
# 示例数据
data = [
{
'id': 1,
'name': 'A',
'children': [
{
'id': 2,
'name': 'B',
'children': [
{
'id': 3,
'name': 'C'
},
{
'id': 4,
'name': 'D'
}
]
},
{
'id': 5,
'name': 'E'
}
]
},
{
'id': 6,
'name': 'F'
}
]
result = flatten(data)
print(result)
输出结果为:
[
{'id': 1, 'name': 'A', 'parentId': None},
{'id': 2, 'name': 'B', 'parentId': 1},
{'id': 3, 'name': 'C', 'parentId': 2},
{'id': 4, 'name': 'D', 'parentId': 2},
{'id': 5, 'name': 'E', 'parentId': 1},
{'id': 6, 'name': 'F', 'parentId': None}
]
在递归函数中,我们首先将当前节点的 parentId 设置为传入的 parent_id,并添加到结果列表中。然后,如果当前节点有子节点,我们通过递归调用 flatten 函数来处理子节点,并将当前节点的 id 作为子节点的 parent_id 传递下去。这样就可以保持使用 flatten 函数时的一致的 parentId/id 关系。
上一篇:保持一致性的数组模式问题