2014-10-30 84 views
0

在我的Javascript程序中,我有一个Person对象的列表。在Javascript中查找某个键的最低值的对象

例如

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

我想找到最年轻的Person

我已经通过创建两个数组来完成这个任务:所有Person和其中一个年龄段中的一个,并获得最低年龄的索引并将其应用于第一个数组。像:

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]; 

这个问题是效率低下似乎并不是最好的方式。此外,它并没有涉及到最年轻的情况。

有没有人知道更原始,更简单的方法来做到这一点?

+0

你的名单似乎是错误的。它是否意味着以人名作为关键字的对象数组或单个对象? – Heikki 2014-10-30 12:02:36

+0

arrayOfAges应该是值的数组而不是对象 – theinvisible 2014-10-30 12:04:23

+0

@ Heikki它的意思是“Person”对象的列表 – CodyBugstein 2014-10-30 12:43:30

回答

0

您可以按年龄财产的人阵列和挑选第一招:

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]); 
相关问题