Показать сообщение отдельно
  #1 (permalink)  
Старый 25.11.2019, 23:51
Аспирант
Отправить личное сообщение для Marson Посмотреть профиль Найти все сообщения от Marson
 
Регистрация: 14.08.2018
Сообщений: 65

как сортировать вложенные элементы по алфавиту?
Дан список гостей.
 У каждого есть имя и список имен близких друзей, с кем человек себя комфортно чувствует.
 Изначально список отсортирован по алфавиту (по полю "name").
 Посадите гостей за круглый стол так, чтобы человека окружали только его близкие друзья.
 Отдавая предпочтение списку по алфавиту.
 
 Например:
 
 Входящий массив (аргумент "arr")
 [
    { name: 'Ali', close: ['Vasil', 'Wog'] },
    { name: 'San', close: ['Vasil', 'Zena'] },
    { name: 'Vasil', close: ['San', 'Ali'] },
    { name: 'Wog', close: ['Zena', 'Ali'] },
    { name: 'Zena', close: ['Sun', 'Wog'] }
 ]

 Поскольку входящий массив отсортирован по алфавиту, на первом месте объект с "name" == "Ali".
 Там его и оствляем, и ищем соседа. В массиве "close" у этого объекта находятся "Vasil" и "Wog".
 Кого из этих двоих посадить следующим, выбираем по алфавиту. В данном случае - это "Vasil".
 Располагаем объект c name == "Vasil" после "Ali".
 Чтобы узнать следующего, смотрим "close" у объекта "Vasil". Там находяться "San" и "Ali".
 По алфавиту, из этих двоих следующим должен быть "Ali", но он уже занял свое место, поэтому
 следующим будет "San". И так далее.
 В итоге гости должны сидеть в следующем порядке Ali, Vasil, Sun, Zena, Wog.
 
 В результате выполнения вашего кода должен получиться отсортированный массив,
 который необходимо передать в вызов функции "finish".
 В данном примере, этот массив будет выглядеть следующим образом
  
[
    { name: 'Ali', close: ['Vasil', 'Wog'] },
    { name: 'Vasil', close: ['San', 'Ali'] },
    { name: 'San', close: ['Vasil', 'Zena'] },
    { name: 'Zena', close: ['Sun', 'Wog'] },
    { name: 'Wog', close: ['Zena', 'Ali'] }    
 ]


нужно применить map() и sort()?
Ответить с цитированием