var foo = {a:1, b:2, c:3, d:4, e:5, f:6, g:7}
{e:5, f:6, g:7}
对于给定的键/值基本对象,如何获得3个顶部值,但不仅仅是值,还有键?钥匙可以是任何东西。让我们说值是整数。
应该记住表现。答案 0 :(得分:10)
您可以将属性提取到数组中,然后对数组进行排序:
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);
如果您希望将结果作为对象,只需将其缩减为一个
即可var topThreeObj = props.slice(0, 3).reduce(function(obj, prop) {
obj[prop.key] = prop.value;
return obj;
}, {});
答案 1 :(得分:1)
获取键/值对:
var pairs = Object.keys(foo).map(function (key) {
return [key, foo[key]];
});
对它们进行排序:
pairs.sort(function (a, b) {
return a[1] - b[1];
});
将一些人变回一个物体:
var result = pairs.slice(-3).reduce(function (obj, pair) {
obj[pair[0]] = pair[1];
return obj;
}, {});