Задать вопрос
Ashlis
@Ashlis

Как можно оптимизировать данную функцию?

Функция places создает новый массив, сортирует объекты внутри по алфавиту и разбивает их на подмассивы по первой букве в параметре свойства name.
Пример результата:
[
  [
    {name: Архангельск},
    {name: Астрахань}
  ],
  [
    {name: Барнаул},
  ],
  [
    {name: Вологда},
    {name: Владимир},
  ]
]


PlaceList - одномерный массив объектов, который не должен быть изменен
places() {
      let places = PlacesList.slice()

      places.sort(function (a, b) {
        return a.name.localeCompare(b.name)
      })

      let arrays = []

      while (places.length > 0) {
        arrays.push(places.splice(0, places.filter(el => el.name[0] === places[0].name[0]).length))
      }

      return arrays
    },
  • Вопрос задан
  • 175 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
@aedam
function places() {
  const places = [...PlacesList];

  const sortedPlaces = {};

  for (const place of places) {
    const letter = place.name[0];

    if (!(letter in sortedPlaces)) {
      sortedPlaces[letter] = [];
    }

    sortedPlaces[letter].push(place);
  }

  return Object.values(sortedPlaces);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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