Javascript 按N个最高数值(键数)进行对象筛选 演示对象: 想要的结果:(按值获取前3个键) 说明:

Javascript 按N个最高数值(键数)进行对象筛选 演示对象: 想要的结果:(按值获取前3个键) 说明:,javascript,Javascript,对于给定的键/值基本对象,如何获得3个顶级值,而不仅仅是值,还包括键?钥匙可以是任何东西。假设值是整数 应考虑性能。您可以将属性提取到数组中,然后对数组进行排序: 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,

对于给定的键/值基本对象,如何获得3个顶级值,而不仅仅是值,还包括键?钥匙可以是任何东西。假设值是整数


应考虑性能。

您可以将属性提取到数组中,然后对数组进行排序:

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;
}, {});
获取键/值对:

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

为了完整性:
Object.key
将只检索可枚举属性<代码>对象。getOwnPropertyNames也可以用来检索不可枚举的名称。现在读到这篇文章,我似乎无法理解我自己的问题:)我在想什么。。。
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;
}, {});