こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

javascriptの2次元配列をソートの仕方

function word_grouping(data) {

var code = data;

//先頭についている”code="を除去
code = code.replace("code=","");
var = code.split(",");

var alpha =new Array();
alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M'];
//2次元配列作成
var array = new Array();
for (i =0; i < alpha.length; i++) {
array[i] = [' ','0']:
}

//グループ名を格納
for( i = 0; i <alpha.length; i++){
array[i][0] = alpha[i]

//0番目の項目から順番にグループごとに分ける
for( i = 0; i < sp.length; i++){
group = sp[i].substring(0.1);
//どのグループに所属しているか調べる
for( j = 0; j < alpha.length; j++){
//一致したグループの配列にカウント+1していく
if(group == array[j][0]{
array[j][1]++;
}
}
}

メモ
・spにはグループのどこかに所属する20個のキーワードが入っていてそれをグループに振り分けている
・グループ分けには”A001”のAだけみて振り分けています

したいこと
・arrayに入ったキーワードの数を降順で並び替えたい

分からない所
・2次元配列をsortする仕方

こんな感じなんです
わかる方回答お願いします。

投稿日時 - 2013-03-05 15:04:01

QNo.7977626

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

自前でソートするのなら、色々なソートの方法が考え出されていますので、検索してみるとよろしいと思います。
ヒットするのはjavascriptではない言語の例の方が多いと思いますが…
例えば、
 http://www.openspc2.org/reibun/javascript/sort/009/
 http://www.openspc2.org/reibun/javascript/sort/001/index.html


javascriptの場合は sort()メソッドが用意されているので、これを利用するほうが簡単でしょう。
 http://www.ajaxtower.jp/js/array_class/index6.html


御提示のサンプルに近い例
var ary = [];

//0~100のランダムな数値をセット
for(var i=0; i<13; i++)
ary[i] = [String.fromCharCode(65+i), (Math.random() * 100 | 0)];


//ソート前の値
var str1 = ary2string(ary);
ary.sort(function(a, b){return b[1] - a[1]});
//ソート後の値
var str2 = ary2string(ary);
alert("前: " + str1 + "\n後: " + str2);


//表示用関数
function ary2string(ary){
for(var s="", i=0; i<ary.length;) s += ary[i++].join(" : ") + " / ";
return s;
}

上記の場合でも、順序をかまわなければ、比較対象となる値をindex:0になるように
 [ (Math.random() * 100 | 0) , String.fromCharCode(65+i) ]
とすることで、比較用の関数を用いなくても
 ary.sort();
だけでソートが可能になります。(昇順ですが、reverse()で逆順になります)

投稿日時 - 2013-03-05 21:31:55

あなたにオススメの質問