人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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/1件

▽最新の回答へ

1 ● 匿名回答2号

回答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とか。まあいいけど。

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ