結論から言うと、
- 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
ピンバック: 【コンピューター】 JavaScriptアプリケーションのためのデザインパターン 2013年09月19日 朝刊 | aquadrops * news