Ну, у меня есть массив с объектами, где некоторые элементы зависят от других элементов.
Итак, мне нужно упорядочить по важности (зависимости от родителя), чтобы сохранить это в базе данных и заменить все дочерние свойства parent
на соответствующие родительские id
.
Пример массива:
[
{
"id": 1,
"email": "a@b.com", // unique
"parent": "c@b.com" // is nullable
},
{
"id": 2,
"email": "b@b.com",
"parent": null
},
{
"id": 3,
"email": "c@b.com",
"parent": "b@b.com"
},
{
"id": 4,
"email": "d@b.com",
"parent": "a@b.com"
},
...
]
Графический пример зависимости:
![enter image description here](https://i.stack.imgur.com/02P88.png)
Ожидаемый результат:
Упорядочено по зависимости (родитель):
[
{
"id": 2,
"email": "b@b.com",
"parent": null
},
{
"id": 3,
"email": "c@b.com",
"parent": 2
},
{
"id": 1,
"email": "a@b.com",
"parent": 3
},
{
"id": 4,
"email": "d@b.com",
"parent": 1
},
...
]
Для установки соответствующего родителя id
Я использую (но нет упорядочения по родительскому уровню: родитель, дети, внуки ...):
let users = [
{
"id": 1,
"email": "a@b.com", // unique
"parent": "c@b.com" // is nullable
},
{
"id": 2,
"email": "b@b.com",
"parent": null
},
{
"id": 3,
"email": "c@b.com",
"parent": "b@b.com"
},
{
"id": 4,
"email": "d@b.com",
"parent": "a@b.com"
}
];
users = users.map(user => {
user.parent = _.findIndex(users, i => user.parent === i.email);
return user;
});
P.S:
В этом случае понятие importance
относится к уровню parent
.
Итак, сначала мне нужны родители, потом дети, внуки и так далее ...
Прошу прощения, если эта ветка плоха в объяснениях, если у вас есть сомнения, я буду искать лучший способ выразить идею.