- 締切済み
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する仕方 こんな感じなんです わかる方回答お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
自前でソートするのなら、色々なソートの方法が考え出されていますので、検索してみるとよろしいと思います。 ヒットするのは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()で逆順になります)