【发布时间】:2021-01-30 03:25:02
【问题描述】:
我需要像这里这样的帮助组对象: 输入数组是:
[
{
Id: '1234',
Name: 'Country - Viet Nam',
AdminLevel: 2
},
{
Id:'5678',
Name: 'Province - Ho Chi Minh',
AdminLevel: 4,
ParentId: '1234'
},
{
Id:'91011',
Name: 'Province - Ha Noi',
AdminLevel: 4,
ParentId: '1234'
},
{
Id:'111213',
Name: 'Province - Da Nang',
AdminLevel: 4,
ParentId: '1234'
},
{
Id:'111213',
Name: 'District - Quan 1',
AdminLevel: 6,
ParentId: '5678'
},
{
Id:'111213',
Name: 'District - Quan 2',
AdminLevel: 6,
ParentId: '5678'
},
{
Id:'111213',
Name: 'District - Quan 3',
AdminLevel: 6,
ParentId: '5678'
},
{
Id:'111213',
Name: 'District - Tinh nao do Ha Noi 1',
AdminLevel: 6,
ParentId: '91011'
},
{
Id:'111213',
Name: 'District - Tinh nao do Ha Noi 2',
AdminLevel: 6,
ParentId: '91011'
},
{
Id:'111213',
Name: 'District - Tinh nao do Ha Noi 3',
AdminLevel: 6,
ParentId: '91011'
}
]
期望输出是:
{
Id: '1234',
Name: 'Country - Viet Nam',
AdminLevel: 2,
Data: [
{
Id:'5678',
Name: 'Province - Ho Chi Minh',
AdminLevel: 4,
ParentId: '1234',
Data: [
{
Id:'111213',
Name: 'District - Quan 1',
AdminLevel: 6,
ParentId: '5678'
},
{
Id:'111213',
Name: 'District - Quan 2',
AdminLevel: 6,
ParentId: '5678'
},
{
Id:'111213',
Name: 'District - Quan 3',
AdminLevel: 6,
ParentId: '5678'
}
]
},
{
Id:'91011',
Name: 'Province - Ha Noi',
AdminLevel: 4,
ParentId: '1234',
Data: [
{
Id:'111213',
Name: 'District - Tinh nao do Ha Noi 1',
AdminLevel: 6,
ParentId: '91011'
},
{
Id:'111213',
Name: 'District - Tinh nao do Ha Noi 2',
AdminLevel: 6,
ParentId: '91011'
},
{
Id:'111213',
Name: 'District - Tinh nao do Ha Noi 3',
AdminLevel: 6,
ParentId: '91011'
}
]
},
{
Id:'111213',
Name: 'Province - Da Nang',
AdminLevel: 4,
ParentId: '1234'
},
]
}
说明:我们必须按 AdminLevel 分组,然后按 ParentId 分组。
- 看一下,我们有结构:国家(父)- 省(多个- 国家的子)- 区(多个- 省的子)。 非常感谢你帮助我
【问题讨论】:
-
所以相同的 parentId 将具有相同的
AdminLevel。你的数据结构看起来是这样。 -
@Derek.W 这可能是巧合。我的猜测是它们是基于
ParentId和Id匹配的。 -
我有一个小问题,为什么
Id属性不是唯一的?通常,您希望 id 来标识 资源。在您的示例数据中,有 7 个对象具有相同的Id(111213)。 -
哎呀,
Id字段不是唯一标识符?其中一半拥有Id和"111213",这确实搞砸了最直接的方法。 -
这里的答案不关心
AdminLevel,因为那是多余的信息;ParentId和AdminLevel都对条目应该在树中的位置进行编码,但ParentId直接告诉你,而AdminLevel充其量只是一个检查。
标签: javascript typescript group-by reduce arrayobject