@Vasia1993

Как получить из массива два максимальных элемента?

Добрый день, подскажите пожалуйста, вопрос по сортировке
const arr = [
      {
          id: 10,
          name: 'Oleg'
      },
      {
          id: 1,
          name: 'Sasha'
      },
      {
          id: 5,
          name: 'Slava'
      },
      {
          id: 2,
          name: 'Nikita'
      },
    ];

Вопрос в том, как отсортировать и получить в переменную сначала name c id 10, во вторую переменную name c id 5?
делаю как-то так:
arr.sort((a, b) => b.id - a.id).map(arr => arr.name);

дело ещё в том, что возвращается новый массив с именами всех людей
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const [ first, second ] = [...arr]
  .sort((a, b) => b.id - a.id)
  .slice(0, 2)
  .map(n => n.name);

или

const [ { name: first }, { name: second } ] = arr.reduce((acc, n) => {
  if (!(acc[0].id >= n.id)) {
    acc[1] = acc[0];
    acc[0] = n;
  } else if (!(acc[1].id >= n.id)) {
    acc[1] = n;
  }
  return acc;
}, [ {}, {} ]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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