Imagine an object like this:
var values = {
"2": 1,
"53": 2,
"56": 4,
"57": 9,
"61": 2,
"62": 16,
"63": 2,
"398": 24,
...
}
My goal is, to find the 10 object keys, which have the highest value. In this case: 398, then 62 and so on (= [398, 62, ...]). I know how I can put this into an array, don't know how to receive the property key though.
Important: I can't change the format because it's a server response.
I tried with a for (key in values) {} loop but have no idea how to move on.
This similar question and it's answer couldn't really help me either.
As commented before:
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))
You could sort by the values property and slice the result.
var values = { 2: 1, 53: 2, 56: 4, 57: 9, 61: 2, 62: 16, 63: 2, 398: 24 },
result = Object
.keys(values)
.sort(function (a, b) { return values[b] - values[a]; })
.slice(0, 10)
.map(Number);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With