@andrei_pro

Как отсортировать элементы по иерархии?

Как отсортировать элементы по иерархии (+алфавиту)?

Пример схемы

Есть массив элементов:
const elements = [{
    id: 1,
    name: "JOBS",
    relations: [],
}, {
    id: 2,
    name: "CUSTOMERS",
    relations: []
}, {
    id: 3,
    name: "PRODUCTS",
    relations: [9],
}, {
    id: 4,
    name: "PRODUCT_VIDEOS",
    relations: [3, 9],
}, {
    id: 5,
    name: "USER_TOKENS",
    relations: [9]
}, {
    id: 6,
    name: "USER_VIEWS",
    relations: [9]
}, {
    id: 7,
    name: "PRODUCT_ACCESS",
    relations: [3]
}, {
    id: 8,
    name: "PRODUCT_COMMENTS",
    relations: [3, 9]
}, {
    id: 9,
    name: "USERS",
    relations: []
}]


У элемента есть relations в котором ид элементов от которых он зависит. Как отсортировать элементы по иерархии, чтобы зависимые элементы были только после "родителей"

Результат должен быть:
CUSTOMERS
JOBS
USERS
PRODUCTS
PRODUCT_ACCESS
PRODUCT_COMMENTS
PRODUCT_VIDEOS
USER_TOKENS
USER_VIEWS
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const sortedElements = [...elements].sort((a, b) =>
  +a.relations.includes(b.id) ||
  -b.relations.includes(a.id) ||
  a.name.localeCompare(b.name)
);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы