获取Javascript中具有最高值的对象键

san*_*oco 3 javascript arrays associative-array

想象一个这样的对象:

var values = {
    "2": 1,
    "53": 2,
    "56": 4,
    "57": 9,
    "61": 2,
    "62": 16,
    "63": 2,
    "398": 24,
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的目标是找到具有最高值的 10 个对象键。在这种情况下:398,然后是 62,依此类推(=[398, 62, ...] )。我知道如何将其放入数组中,但不知道如何接收属性键。

重要提示:我无法更改格式,因为它是服务器响应。

我尝试了一个for (key in values) {}循环,但不知道如何继续。 这个类似的问题及其答案也不能真正帮助我。

Raj*_*esh 5

正如之前评论的:

  • 创建一个键数组: Object.keys(object)
  • 根据值对此数组进行排序: sort((a,b)=> object[b] - object[a])
  • 获取必要的值: keys.slice(0,n)

var value = {2:1,53:2,56:4,57:9,61:2,62:16,63:2,398:24};

function getKeysWithHighestValue(o, n){
  var keys = Object.keys(o);
  keys.sort(function(a,b){
    return o[b] - o[a];
  })
  console.log(keys);
  return keys.slice(0,n);
}

console.log(getKeysWithHighestValue(value, 4))
Run Code Online (Sandbox Code Playgroud)