我需要以正确的层次顺序获取一组对象的所有ID。
更新:
[
{ _id: 'abc', parent: 'mainID', main: 'mainID', order: 1, type: 'item' },
{ _id: 'def', parent: 'mainID', main: 'mainID', order: 2, type: 'item' },
{ _id: 'ghi', parent: 'mainID', main: 'mainID', order: 3, type: 'group' },
{ _id: 'jkl', parent: 'ghi', main: 'mainID', order: 1, type: 'item' },
{ _id: 'mno', parent: 'ghi', main: 'mainID', order: 2, type: 'group' },
{ _id: 'pqr', parent: 'mno', main: 'mainID', order: 1, type: 'item' },
{ _id: 'stu', parent: 'mainID', main: 'mainID', order: 4, type: 'item' }
]
让我简单解释一下我的数据结构:
有几个项目(
type
)。在第一级中,所有项目/组都有父项
mainID
因此,对于第一级元素,ID为:
['abc','def','ghi','stu']
.
ghi
)是一个
组
ghi
.
初始数组中的对象可以具有无序顺序,这就给我带来了问题。
每个级别中元素的顺序由顺序值(升序)确定。
[
{ _id: 'ghi', parent: 'mainID', main: 'mainID', order: 3, type: 'group' },
{ _id: 'jkl', parent: 'ghi', main: 'mainID', order: 1, type: 'item' },
{ _id: 'mno', parent: 'ghi', main: 'mainID', order: 2, type: 'group' },
{ _id: 'pqr', parent: 'mno', main: 'mainID', order: 1, type: 'item' },
{ _id: 'stu', parent: 'mainID', main: 'mainID', order: 4, type: 'item' },
{ _id: 'abc', parent: 'mainID', main: 'mainID', order: 1, type: 'item' },
{ _id: 'def', parent: 'mainID', main: 'mainID', order: 2, type: 'item' }
]
abc
def
ghi
jkl
mno
pqr
stu
我需要的是按从上到下的顺序排列的ID
因此,结果应该是:
['abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu']
由于嵌套结构,我的尝试无效:
(elements) => {
const result = []
elements
.filter(item => (item.parent === item.main))
.forEach(elm => {
result.push(elm._id)
if (elm.type === 'group') {
getOrderedId(elements, elm._id)
}
})
return result
}