いま、HashMapを、JSON形式にして、送るとする。
プログラムは、こんかなんじ。

結果、JSONは、こんなかんじ。

これをAJAXで受けると、こんな問題が起きる。
■問題
(1)HashMapは連想配列に入るが、その連想配列の大きさが分からないので、
ループがまわせない
【解決策】
for(key in data) の形でまわせば、大きさが要らない。
だから、回りはする。でも、
(2)for(key in data) の形でまわすと、順番が狂う
→そもそも、HashMapに順番がない。
→Javascript側でも、JSONを連想配列に変換した場合、
順番は本来は、どうでもいいことになっているようだ・・・
→連想配列の配列でなく、連想配列そのものを、ソートして出したい。
【参考】
PHPと異なり,JavaScriptの連想配列とfor in構文には順序の概念がないので注意すること
http://d.hatena.ne.jp/TipsMemo+computer-technology/20140601/p1
■コレに対する、世論
Webを見ると、大きく2つの主張がされています。
(1)連想配列のソートは可能
→多くのケースでは、連想配列を配列に入れて、それをソートしている
→今回は連想配列そのものを順番に出そうという話なので、このケースではない
(2)連想配列のソートは不可能
たとえば、以下のサイトでは、そう主張している
連想配列のソート
http://xn--l8j3bvb4foc.jp/contents/javascript/jsmemo4.htm
これらの方法とは違う方法で、出来ます。
■解決法
キーだけを、配列で取ってくる方法があります
keys = Object.keys(data);
大きさを知りたい場合は、keys.lengthで分かります。
キーをソートしたい場合はkeys.sort()でソートします。
ソートした結果を取り出したい場合は、

のようなかんじで取り出せます。結果は、こんなかんじ

【参考】
javascript 連想配列(オブジェクト)の要素数が知りたい。
http://chaika.hatenablog.com/entry/2014/08/07/103459
プログラムは、こんかなんじ。

結果、JSONは、こんなかんじ。

これをAJAXで受けると、こんな問題が起きる。
■問題
(1)HashMapは連想配列に入るが、その連想配列の大きさが分からないので、
ループがまわせない
【解決策】
for(key in data) の形でまわせば、大きさが要らない。
だから、回りはする。でも、
(2)for(key in data) の形でまわすと、順番が狂う
→そもそも、HashMapに順番がない。
→Javascript側でも、JSONを連想配列に変換した場合、
順番は本来は、どうでもいいことになっているようだ・・・
→連想配列の配列でなく、連想配列そのものを、ソートして出したい。
【参考】
PHPと異なり,JavaScriptの連想配列とfor in構文には順序の概念がないので注意すること
http://d.hatena.ne.jp/TipsMemo+computer-technology/20140601/p1
■コレに対する、世論
Webを見ると、大きく2つの主張がされています。
(1)連想配列のソートは可能
→多くのケースでは、連想配列を配列に入れて、それをソートしている
→今回は連想配列そのものを順番に出そうという話なので、このケースではない
(2)連想配列のソートは不可能
たとえば、以下のサイトでは、そう主張している
連想配列のソート
http://xn--l8j3bvb4foc.jp/contents/javascript/jsmemo4.htm
これらの方法とは違う方法で、出来ます。
■解決法
キーだけを、配列で取ってくる方法があります
keys = Object.keys(data);
大きさを知りたい場合は、keys.lengthで分かります。
キーをソートしたい場合はkeys.sort()でソートします。
ソートした結果を取り出したい場合は、

のようなかんじで取り出せます。結果は、こんなかんじ

【参考】
javascript 連想配列(オブジェクト)の要素数が知りたい。
http://chaika.hatenablog.com/entry/2014/08/07/103459