- ベストアンサー
javascriptでの3次元配列のソートについて
- javascriptでの3次元配列のソートについて解説します。配列のデータ構造やソート条件について説明し、ソートを行うための方法を探ります。
- 質問文では、商品のデータが3次元配列に格納されている状況が説明されています。工場ごとに課別に商品データが格納されており、その中で値段のソートを行いたいとのことです。
- javascriptのビルトイン関数であるsortを使ってソートを試みましたが、うまくいかなかったとのことです。ソートの方法について、アドバイスをお願いしたいとのことです。
- みんなの回答 (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]; }); が、ミソでしたね。。