如何在Javascript中的对象数组中找到属性的最小值和最大值

我有以下javascript对象:

Person1.Name = "John"; Person1.Age = 12; Person2.Name = "Joe"; Person2.Age = 5; 

然后我有一系列的人,我如何根据人的年龄找到最小/最大?

Javascript或Jquery中的任何解决方案都是可以接受的。

非常感谢您的帮助。

假设你的数组看起来像这样:

 var persons = [{Name:"John",Age:12},{Name:"Joe",Age:5}]; 

然后你可以:

 var min = Math.min.apply(null, persons.map(function(a){return a.Age;})) ,max = Math.max.apply(null, persons.map(function(a){return a.Age;})) 

[ 编辑 ]添加ES2015方法:

 const minmax = (someArrayOfObjects, someKey) => { const values = someArrayOfObjects.map( value => value[someKey] ); return { min: Math.min.apply(null, values), max: Math.max.apply(null, values) }; }; console.log( minmax( [ {Name: "John", Age: 12}, {Name: "Joe", Age: 5}, {Name: "Mary", Age: 3}, {Name: "James sr", Age: 93}, {Name: "Anne", Age: 33} ], 'Age') ); 

首先,使用自定义排序function对数组进行排序 :

 var sorted = persons.sort(function(a, b) { if(a.Age > b.Age) return 1; else if(a.Age < b.Age) return -1; else return 0; }); 

然后你可以采取第一个和最后一个:

 var min = sorted[0], max = sorted[sorted.length - 1];