私は次のjavascriptオブジェクトを持っています:
Person1.Name = "John";
Person1.Age = 12;
Person2.Name = "Joe";
Person2.Age = 5;
次に、一連の人がいますが、人の年齢に基づいて最小/最大を見つけるにはどうすればよいですか?
JavascriptまたはJqueryの任意のソリューションが受け入れられます。
あなたの助けは大歓迎です。
私は次の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')
);
まず、カスタムの並べ替え関数を使用して配列を並べ替えます。
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];