2014-10-30 71 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]); 
相關問題