匿名質問者
匿名質問者匿名質問者とは「匿名質問」を利用して質問した質問者。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら

javascript 配列のソートについて


var array ={12:[1,2,aaa], 20:[5,9,bbb], 8:[4,7,ccc],.....}
のような配列をキーを基準としてソートしたいのですがどのように記述すればよいのでしょうか?

結果は
[8:[4,7,ccc], 12:[1,2,aaa], 20:[5,9,bbb]]となっていて欲しいです

よろしくお願いします

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/02/01 18:36:14
  • 終了:2013/02/08 18:40:03

回答(1件)

匿名回答2号 No.1

匿名回答2号「匿名質問」を利用した質問に回答すると「匿名回答○号」と匿名で表示されます。
「匿名質問」では、ユーザー名を公開せずに匿名の質問ができます。
詳しくはこちら
2013/02/02 01:00:32

回答1号さんの言う通りです。
なので方法かデータ形式を変える必要があります。

方法の一つは、キーのリストをソートしたものを用意しておいて、それを参照する方法。

var sorted = array.keys().sort(function(a,b){return a-b;});
for(var i=0; i<sorted.length; i++){
    // ....
    foo = array[sorted[i]];
    // ....
}

こんな感じ?

もう一つの方法はデータ形式を変えてしまう方法。

var array = [{k:12,v:[1,2,aaa]}, {k:20,v:[5,9,bbb]}, {k:8,v:[4,7,ccc]}, {k:...,v:...}, ...];

こんな感じで。これだと以下の様に。

array.sort(function(a,b){return a.k-b.k;});

参考:
http://lostlinksearch.net/blog/2012/03/javascript%E9%85%8D%E5%88%97%E3%81%AE%E9%85%8D%E5%88%97%E3%83%BB%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E9%85%8D%E5%88%97%E3%82%92%E3%82%BD%E3%83%BC%E3%83%88/
https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/Object/keys
keysが使えなければfor in構文で代替を。


あと、配列名にarrayはちょっと(Arrayがあるので)。arrとかdataとか。まあいいけど。

  • 匿名回答1号
    匿名回答1号 2013/02/01 20:05:45
    var array ={12:[1,2,aaa], 20:[5,9,bbb], 8:[4,7,ccc],.....}
    は連想配列です。
    連想配列には順序という概念は存在しませんので、当然ソートという操作を行うこともできません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません