查找对象中的 2 个最高值 - Javascript

Nem*_*a G 2 javascript

我正在尝试从对象中获取前 2 个最高值:

emotions = {
      joy: 52,
      surprise: 22,
      contempt: 0,
      sadness: 98,
      fear: 60,
      disgust: 20,
      anger: 1,
  };
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用Math.max()所有这些值,但在这个例子中它只会返回悲伤的值。我能以某种方式获得带有标签(悲伤)和价值(98)的前 2 名吗?

Nin*_*olz 5

您可以获取条目,对它们进行排序并返回转换为单个对象的对象。

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);
Run Code Online (Sandbox Code Playgroud)