【问题标题】:Finding object with lowest value for some key, in Javascript在Javascript中为某个键查找具有最低值的对象
【发布时间】:2014-12-26 10:54:36
【问题描述】:

在我的 Javascript 程序中,我有一个 Person 对象列表。

例如

[
     "Michael": {
          "age": 45,
          "position": "manager",
          ...
     },
    "Dwight": {
          "age": 36,
          "position": "assistant manager",
          ...
     },
    ....
]

我要找最年轻的Person

我通过创建两个数组来实现这一点:所有Persons 中的一个和他们所有年龄中的一个,并获取最低年龄的索引并将其应用于第一个数组。喜欢:

var arrayOfPersons = [persons[0], persons[1], ....];
var arrayOfAges = [persons[0].age, persons[1].age, ....];
var min = arrayOfAges.indexOf(Math.max.apply(Math, arrayOfAges));
var youngestPerson = arrayOfPerson[min];

这样做的问题是效率低下,这似乎不是最好的方法。它也没有处理最小的可能存在平局的事实。

有谁知道更本地、更简单的方法来做到这一点?

【问题讨论】:

  • 您的列表似乎有误。它是一个对象数组还是以人名作为键的单个对象?
  • arrayOfAges 应该是值数组而不是对象
  • @Heikki 这应该是Person 对象的列表
  • @theinvisible 是。这是一个年龄值列表

标签: javascript arrays object min


【解决方案1】:

您可以按年龄属性对 people 数组进行排序并选择第一个:

var persons = [
    { name: 'Michael', age: 45, position: 'manager' },
    { name: 'Dwight', age: 36, position: 'assistant manager' },
    { name: 'Foo', age: 99, position: 'foo' },
    { name: 'Bar', age: 37, position: 'bar' }
];

persons.sort(function(a, b) {
    return a.age > b.age;
});

console.log('Youngest person: ', persons[0]);

【讨论】:

    猜你喜欢
    • 2021-09-05
    • 2020-04-05
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2022-11-26
    • 2023-03-24
    • 1970-01-01
    • 2016-06-28
    相关资源
    最近更新 更多