これは、JSON データ オブジェクトを使用して JavaScript を実行する最初の試みであり、目標を達成するための適切な方法についてアドバイスが必要です。
一部のサーバー側コードは実際に JSON 形式の文字列を生成し、それを処理して文字列に割り当てる必要があります。
var dataString='$DATASTRING$';
しかし、サーバーがそのデータを置き換えた後に処理しなければならない最終結果 (もちろん \r\n なし):
var dataString='[
{ "category" : "Search Engines", "hits" : 5, "bytes" : 50189 },
{ "category" : "Content Server", "hits" : 1, "bytes" : 17308 },
{ "category" : "Content Server", "hits" : 1, "bytes" : 47412 },
{ "category" : "Search Engines", "hits" : 1, "bytes" : 7601 },
{ "category" : "Business", "hits" : 1, "bytes" : 2847 },
{ "category" : "Content Server", "hits" : 1, "bytes" : 24210 },
{ "category" : "Internet Services", "hits" : 1, "bytes" : 3690 },
{ "category" : "Search Engines", "hits" : 6, "bytes" : 613036 },
{ "category" : "Search Engines", "hits" : 1, "bytes" : 2858 }
]';
そして、それを操作するオブジェクトに変更できます。
var dataObject=eval("("+dataString+")");
これにより、データの個々の行にアクセスできますが、値を合計し、グループ化し、並べ替える必要があります。
次のような SQL ステートメントに相当するものが必要です。
SELECT category, sum(hits), sum(bytes)
FROM dataObject
GROUP BY category
ORDER BY sum(bytes) DESC
私が望む出力は、さらに処理できる次のようなオブジェクトになります。
var aggregatedObject='[
{ "category" : "Search Engines", "hits" : 13, "bytes" : 673684 },
{ "category" : "Content Server", "hits" : 3, "bytes" : 88930 },
{ "category" : "Internet Services", "hits" : 1, "bytes" : 3690 },
{ "category" : "Business", "hits" : 1, "bytes" : 2847 }
]';
...しかし、どこから始めればよいかわかりません。
最初にすべてのカテゴリ値をループして一意のカテゴリを見つけ、次にもう一度ループしてヒット数とバイト数を合計し、次にもう一度並べ替えることができますが、もっと簡単な方法が必要なようです。
プロトタイプ.js (1.7) はクライアント ページに既に含まれていますが、必要に応じてアンダースコア、jQuery、またはその他の小さなライブラリを追加できます。
クエリを処理するためのコード量が最も少なく、最も簡単で、最も小さく、何が最適かはわかりません。
助言がありますか?