获取对象键的最高数值N值

时间:2015-08-30 23:38:55

标签: javascript

演示对象:

var foo = {a:1, b:2, c:3, d:4, e:5, f:6, g:7}

通缉结果:(按值获得前3个键)

{e:5, f:6, g:7}

说明:

对于给定的键/值基本对象,如何获得3个顶部值,但不仅仅是值,还有键?钥匙可以是任何东西。让我们说值是整数。

应该记住表现。

2 个答案:

答案 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;
}, {});