結論から言うと、
- Math.max.apply(null,object.map(function(o){return o.element;}))
の1行で実現できる。
- JavaScriptで最大値を得るには Math.max(x,y) を使う
- 配列の最大値を得るには apply() を使う
- 配列から特定の要素(の全て)を取り出すには map() を使う
パラメータは2つに限らず複数でも可。つまり、Math.max(x,y,z)とは書けるが、配列を渡すことはできない。
数値を格納した配列 array に対しては、Math.max.apply(null,array)とすればOK。
Array.mapは「与えられた関数を配列のすべての要素に対して呼び出し、その結果からなる新しい配列を生成」する関数。
[
{
"gpsDate": "2011/02/14",
"gpsTime": "10:31:18",
"lon": 138.73067666666665,
"lat": 37.125295,
"speed": 115.1,
"direction": 91,
"numSat": 3,
"idx": 0
},
{
"gpsDate": "2011/02/14",
"gpsTime": "10:31:33",
"lon": 138.736065,
"lat": 37.124905,
"speed": 114.4,
"direction": 95.9,
"numSat": 5,
"idx": 1
}
]
というオブジェクトの配列 gGpsData に対し、
gGpsData.map(function(o){return o.speed;})
を実行すると、要素speedを取り出して、配列[115.1,114.4]が返される。
Math.max.apply(null,gGpsData.map(function(o){return o.speed;}))
により、115.1が得られる。
参考にしたサイト:
ピンバック: GPSデータの各種情報を表示する(2) | Try Lifelog