У меня есть массив объектов, где каждый объект имеет свойство id
и ParentId
(поэтому их можно расположить в деревьях). Они не в определенном порядке.
Обратите внимание, что id
и parentId
не будут целыми числами, они будут строками (просто хотелось, чтобы пример кода был чище..)
Есть только один корень: скажем, его id
:1 Данные выглядят так:
data = [
{
id:"id-2",
parentId:"id-3"
},
{
id:"id-4",
parentId:"2"
},
{
id:"id-3",
parentId:"id-4"
},
{
id:"id-5",
parentId:"id-4"
},
{
id:"id-6",
parentId:"id-1"
},
{
id:"id-7",
parentId:"id-1"
}
// and so on...
]
Я ищу эффективный способ дать каждому объекту свойство level
, которое должно указывать уровень вложенности, которым он является...
Тогда они должны выглядеть так:
data = [
{
id:"id-2",
parentId:"id-1",
level:2
},
{
id:"id-3",
parentId:"id-4",
level:5
},
{
id:"id-4",
parentId:"id-2",
level:3
},
{
id:"id-5",
parentId:"id-4",
level:5
},
{
id:"id-6",
parentId:"id-1",
level:2
},
{
id:"id-7",
parentId:"id-3",
level:4
}
// and so on...
]
Вкратце:
Я хочу, чтобы этот level
добавлялся динамически, проходя через массив и выясняя иерархию.
Кроме того, (если возможно) они должны быть отсортированы в соответствии с порядком, например, все объекты level:3
от одного и того же родителя должны быть рядом друг с другом, а не должны быть братья и сестры одного и того же родителя рядом друг с другом, а не два двоюродные братья 3 уровня рядом друг с другом.
parentId
:1 (будет строкой) - person adardesign   schedule 03.01.2013id
? - person Joe Coder   schedule 03.01.2013