私はご提示のコードで十分だと思います。
考えてみましたが、以下のようなわけのわからないコードになってしまいました。
(ary2を使わない方法)
JavaScript
1var ary = [["関東", "東京"],["関東","神奈川"],["関東","千葉"],["関東","埼玉"],["東海","愛知"],["東海","三重"],["東海","岐阜"],["北陸","富山"],["北陸","福井"],["北陸","石川"]];
2var ary2 = new Array();
3var ary3 = new Array();
4var var k = 0;
5for(var i = 0; i < ary.length; i++){
6 if(ary2[ary[i][0]] == null){
7 ary2[ary[i][0]] = k++;
8 }
9 if(ary3[ary2[ary[i][0]]] == null){
10 ary3[ary2[ary[i][0]]] = new Array();
11 }
12 ary3[ary2[ary[i][0]]][ary3[ary2[ary[i][0]]].length] = ary[i];
13}
もしも処理結果が連想配列でもいいのであれば、さらに変数が減らせます。
JavaScript
1var ary = [["関東", "東京"],["関東","神奈川"],["関東","千葉"],["関東","埼玉"],["東海","愛知"],["東海","三重"],["東海","岐阜"],["北陸","富山"],["北陸","福井"],["北陸","石川"]];
2var ary2 = new Array();
3for(var i = 0; i < ary.length; i++){
4 if(ary2[ary[i][0]] == null){
5 ary2[ary[i][0]] = new Array();
6 }
7 ary2[ary[i][0]][ary2[ary[i][0]].length] = ary[i];
8}
連想配列を普通の配列に戻す
JavaScript
1var ary = [["関東", "東京"],["関東","神奈川"],["関東","千葉"],["関東","埼玉"],["東海","愛知"],["東海","三重"],["東海","岐阜"],["北陸","富山"],["北陸","福井"],["北陸","石川"]];
2var ary2 = new Array();
3var ary3 = new Array();
4for(var i = 0; i < ary.length; i++){
5 if(ary2[ary[i][0]] == null){
6 ary2[ary[i][0]] = new Array();
7 }
8 ary2[ary[i][0]][ary2[ary[i][0]].length] = ary[i];
9}
10for(var key in ary2){
11 ary3[ary3.length] = ary2[key];
12}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/27 06:32 編集
2015/11/27 08:34