@LieKarp

Как выбрать объекта с наивысшем свойством из коллекции?

Есть объект:
Collection(2)[Map] {
    '1' => Role {
        guild: Guild {
            id: '....',
            raw: 48,
        },
    }
    '2' => Role {
        guild: Guild {
            id: '....',
            raw: 98,
        },
    }
}

Как выбрать объект с наивысшим значением свойства raw? В данном случае 98
  • Вопрос задан
  • 53 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
[...Collection.values()].sort((a, b) => a.guild.raw - b.guild.raw).pop()

Я так понял, дан объект Map. Привести его значения к массиву. Отсортировать по значению guild.raw по возрастанию. Взять последний объект – он с наибольшим значением raw.

Это не самый эффективный способ: проделывается много ненужных сравнений. Запись короткая, других преимуществ нет.

Правильнее один раз пройти по массиву, откладывая элемент с наибольшим значением на каждом шаге. Что-то типа
[...Collection.values()]
  .reduce((max, current) => max.guild.raw > current.guild.raw ? max : current)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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