
javascriptでの3次元配列のソートについてです。
データ:
arrWk[0][0][0] ~ arrWk[5][5][5]の枠があり、
arrWk[*][*][0]が商品のID、
arrWk[*][*][1]が商品の大きさ、
arrWk[*][*][2]が商品の保管場所、
arrWk[*][*][3]が商品の値段、
arrWk[*][*][4]が商品の色、
arrWk[*][*][5]が商品の製造日付はいっているとします。
arrWk[0~5]が工場別、arrWk[][0~5]がその工場内の課別になって
おります。
このとき、ある工場内における商品の値段のソートを行いたいです。
arrWk[0][][]がA工場、arrWk[0][0~5][]がA工場の01課、02課・・・
として、A工場における商品値段のソートですので、
ソート前 arrWk[0][0から5][]だったのが、
ソート後 arrWk[0][3,2,5,0,4,1][]の順番で新しい配列に
格納されたいです。
長々でしたが、自分なりにjavascriptのビルドイン関数の
sortをなんとか使えないものかとやってみましたがなかなかうまく
いきません。
お知恵をお借りしたいです!!
No.1ベストアンサー
- 回答日時:
3次元配列のソートというより、arrWk[0]以下がソートできればよいということであれば2次元配列のソートですね。
以下例です。-------------------------------------------------
var arrWk = [
[
["id10", 10, "p10", 13, "c10", "2008/01/10"],
["id11", 11, "p11", 15, "c11", "2008/01/11"],
["id12", 12, "p12", 11, "c12", "2008/01/12"],
["id13", 13, "p13", 10, "c13", "2008/01/13"],
["id14", 14, "p14", 14, "c14", "2008/01/14"],
["id15", 15, "p15", 12, "c15", "2008/01/15"]
],[
["id20", 20, "p20", 23, "c20", "2008/01/20"],
["id21", 21, "p21", 25, "c21", "2008/01/21"],
["id22", 22, "p22", 21, "c22", "2008/01/22"],
["id23", 23, "p23", 20, "c23", "2008/01/23"],
["id24", 24, "p24", 24, "c24", "2008/01/24"],
["id25", 25, "p25", 22, "c25", "2008/01/25"]
]
]
arrWk[0] = arrWk[0].sort(function(a, b){
return a[3] - b[3];
});
var str = "";
for(var i = 0; i < arrWk[0].length; i++){
str += arrWk[0][i].toString() + "\n";
}
alert(str);
-------------------------------------------------
重要なのは
=================================================
arrWk[0] = arrWk[0].sort(function(a, b){
return a[3] - b[3];
});
=================================================
の部分。sortメソッドに渡すクロージャ(関数)はsortの処理内部で要素間の比較に使用されます。第一引数が前、第二引数が後。この関数が正数を返却すると、その順序を入れ替えます。これを繰り返してソートしています。なので、return a[3]-b[3]となるわけです。
クロージャの考え方はちょっと分かりにくいかもしれませんが、この場合はこういうものと覚えてしまってください。
バッチリです。
ありがとうございました!
arrWk[0] = arrWk[0].sort(function(a, b){
return a[3] - b[3];
});
が、ミソでしたね。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) excel マクロでグループ内でソートしたい。見出しが上手くいきません。 7 2022/05/22 08:31
- その他(ビジネススキル・経営ノウハウ) クラウドファウンディングによる新製品の販売支援要求。「あれ?この商品、もう完成品じゃね?」という疑問 2 2022/08/22 12:32
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) ある文字を含む際に、値を返す数式についてです 5 2022/08/28 16:58
- Excel(エクセル) スプレッドシートでの質問です 1 2023/07/06 20:43
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- Excel(エクセル) エクセル 関数について 4 2022/08/05 11:03
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jspからjavascriptの変数引継ぎ
-
C#テキストボックスの文字を配...
-
Javascript 配列の使い方について
-
ソートで
-
同じIDで定義した要素の配列を...
-
javascriptで2つのArrayの...
-
Javascript 特定のフォルダのデ...
-
商品コードを入力で、商品名、...
-
HTTPSのとき":"が"%3A"ではなく...
-
リファラー情報のエンコードを...
-
JavaScriptで平日のみをカウン...
-
idを使わずにonclickで自身の要...
-
XMLの空白要素をJavas...
-
数値の表示について
-
HTML:Tableタグに対し、JavaScr...
-
HTMLにWSHを組み込む
-
アルファベットABCD…をスマート...
-
C#で、ContextMenuStripに動的...
-
VB2005 配列から要素を検索す...
-
JavaScript window.openで開く...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#テキストボックスの文字を配...
-
同じIDで定義した要素の配列を...
-
jspからjavascriptの変数引継ぎ
-
javascript 変数名の連結をしたい
-
undefinedを表示させない方法は...
-
二次元配列を使って順位をだす...
-
javascriptで2つのArrayの...
-
複数のフィードの読み込みが日...
-
二次元配列の全要素の全要素を...
-
javascriptを用いて作成された...
-
("Scripting.Dictionary")につ...
-
javascriptで行を抽出したいです。
-
JavaScriptで簡単なクイズを作...
-
1から20までの整数から、重複な...
-
javascriptついてお聞きします。
-
ぷよぷよの消去アルゴリズムが...
-
配列を作って総当たりで距離を...
-
配列の数ではなく、文字列の長...
-
jQueryで文字数カウンタ(複数...
-
jQuery text()で、<br>タグも取...
おすすめ情報