7

私は次のjavascriptオブジェクトを持っています:

Person1.Name = "John";
Person1.Age = 12;

Person2.Name = "Joe";
Person2.Age = 5;

次に、一連の人がいますが、人の年齢に基づいて最小/最大を見つけるにはどうすればよいですか?

JavascriptまたはJqueryの任意のソリューションが受け入れられます。

あなたの助けは大歓迎です。

4

2 に答える 2

21

アレイが次のようになっているとします。

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') 
);

于 2012-08-16T10:27:02.280 に答える
1

まず、カスタムの並べ替え関数を使用して配列を並べ替えます。

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];
于 2012-08-16T10:23:10.347 に答える