var foo = {a:1, b:2, c:3, d:4, e:5, f:6, g:7}
{e:5, f:6, g:7}
For a given key/value basic object, how would you get the 3 top values, but not just the values but also the keys? keys could be anything. lets say values are integers.
performance should be in mind.
You can extract the properties into an array, then sort the array:
var foo = {a:1, b:2, c:3, d:4, e:5, f:6, g:7}
var props = Object.keys(foo).map(function(key) {
return { key: key, value: this[key] };
}, foo);
props.sort(function(p1, p2) { return p2.value - p1.value; });
var topThree = props.slice(0, 3);
If you want the result as an object, just reduce it back to one
var topThreeObj = props.slice(0, 3).reduce(function(obj, prop) {
obj[prop.key] = prop.value;
return obj;
}, {});
Get key/value pairs:
let pairs = Object.entries(foo);
Sort them:
pairs.sort((a, b) => a[1] - b[1]);
Turn some back into an object:
let result = Object.fromEntries(pairs.slice(-3));
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