Найти 2 самых высоких значения в объекте - Javascript

1

Я пытаюсь получить верхние 2 наивысших значения от объекта:

emotions = {
      joy: 52,
      surprise: 22,
      contempt: 0,
      sadness: 98,
      fear: 60,
      disgust: 20,
      anger: 1,
  };

Я понимаю, что могу использовать Math.max() со всеми этими значениями, но в этом примере он вернет только значение грусти. Могу ли я как-то получить топ-2, с меткой (печаль) и значением (98)?

  • 0
    Просто отсортировать их и взять первые 2 элемента?
  • 2
    stackoverflow.com/questions/1069666/… посмотрите это для подсказки
Показать ещё 5 комментариев
Теги:

1 ответ

4
Лучший ответ

Вы можете получить записи, отсортировать их и вернуть объекты, которые преобразуются в один.

var emotions = { joy: 52, surprise: 22, contempt: 0, sadness: 98, fear: 60, disgust: 20, anger: 1 },
    top2 = Object
        .entries(emotions)
        .sort(({ 1: a }, { 1: b }) => b - a)
        .slice(0, 2)
        .map(([label, value]) => ({ label, value }));
  
 console.log(top2);
  • 0
    Хм, это работает в вашем примере, но я получаю ошибку: ожидалось как минимум 1 аргумент, но получил 0 или больше. он показывает ошибку для строки top 2 = ... Вы знаете, что не так?
  • 0
    какой пользовательский агент (браузер) вы используете?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню