Поиск верхнего родителя

Есть массив Объектов. В объекте данные об имени, id и если есть родительский элемент, то еще и родительский элемент. Необходимо получить объект файлов с путями, где ключом является id, а значением путь.

 arr = [
   {
    id: 1,
    name: 'Anthony',
    parent_id: '',
    parent_name: ''
   },
   {
    id: 2,
    name: 'Klay',
    parent_id: 1,
    parent_name:'Anthony'
   },
   {
    id: 3,
    name: 'Sam',
    parent_id: '',
    parent_name:''
   }
  ]

Нужно вывести в таком виде

{
   1: '/ > Anthony',
   2: '/ > Anthony > Klay',
   3: '/ > Sam'
  }

Если добавить еще один элемент, например:

{
    id: 4,
    name: 'Stephen',
    parent_id: '2',
    parent_name:'Anthony'
   }

Результат должен быть следующим:

4: '/ > Anthony > Klay > Stephen'

Ответы (1 шт):

Автор решения: Denis640Kb

    arr = [
        {
            id: 1,
            name: 'Anthony',
            parent_id: '',
            parent_name: ''
        },
        {
            id: 2,
            name: 'Klay',
            parent_id: 1,
            parent_name:'Anthony'
        },
        {
            id: 3,
            name: 'Sam',
            parent_id: '',
            parent_name:''
        }
    ];

    let newArr = [];

    arr.forEach(function (c) {
        if (c.parent_name != ""){
            newArr[c.id] = "'/ > " + c.parent_name + " > " + c.name + "'";
        } else {
            newArr[c.id] = "'/ > " + c.name;
        }
    });
    console.log(newArr);

→ Ссылка