javascript - JavaScriptで3次元配列をソートする

javascript arrays multidimensional-array

この配列を検討してください

var LIST =[];

LIST['C']=[];
LIST['B']=[];

LIST['C']['cc']=[];
LIST['B']['bb']=[];  

LIST['C']['cc'].push('cc0');
LIST['C']['cc'].push('cc1');
LIST['C']['cc'].push('cc2');
LIST['B']['bb'].push('bb0');
LIST['B']['bb'].push('bb1');
LIST['B']['bb'].push('bb2');


私はこの配列をループすることができます

  for(var i in LIST){

      console.log(i)//C,B
      var level1=LIST[i];

      for(var j in level1){
        console.log(j)//cc,bb
        // etc...
      }

   }


いいですね。基本的な質問はほとんどありません。

1.各レベルで配列を並べ替える方法は?

1つのレベルは.sort(fn)メソッドでソートできます。どのようにして内部レベルに渡すことができますか?

2. indexOfメソッドが最初の2つのレベルの要素を検索できないのはなぜですか?

文字列以外のパラメータが原因である場合、項目が文字列でない場合に配列内の配列項目を検索するにはどうすればよいですか?

3. for(var i in LIST)はどのように機能しますか?
配列のインデックス付けとループの基本的な知識が必要なだけです。

ありがとう。
答え
LISTはJavaScriptの3次元配列ではなく、単なる配列です。

//declare an array which names LIST.
var LIST = [];

//set a property named 'C' of the LIST to be an array.
LIST['C']=[];
//set a property named 'B' of the LIST to be an array.
LIST['B']=[];

//set a property named 'cc' of the 'LIST.C'(which is an array object)
LIST['C']['cc']=[];
//set a property named 'bb' of the 'LIST.B'(which is an array object)
LIST['B']['bb']=[];  


実際は、最後のレベルを配列にするだけでよいのです。以下のサンプルコードを参照してください。

function iterateOrderd(obj) {
    if (obj instanceof Array) {
        obj.sort();
        for (var j = 0, l=obj.length; j < l; j++) {
            console.log(obj[j]);
        }
    } else {
        var sortable = [];
        for (var i in obj) {
            if (obj.hasOwnProperty(i)) {
                sortable.push(i);
            }
        }
        sortable.sort();
        for (var j = 0, l=sortable.length; j < l; j++) {
            console.log(sortable[j]);
            iterateOrderd(obj[sortable[j]]);
        }
    }
}


var LIST = {};

LIST['C'] = {};
LIST['B'] = {};

LIST['C']['cc']=[];
LIST['B']['bb']=[];  

LIST['C']['cc'].push('cc0');
LIST['C']['cc'].push('cc1');
LIST['C']['cc'].push('cc2');
LIST['B']['bb'].push('bb0');
LIST['B']['bb'].push('bb1');
LIST['B']['bb'].push('bb2');

iterateOrderd(LIST);
関連記事

asp.net - これは、WebDriverを使用してJavaScript警告ダイアログを処理する正しい方法ですか?

javascript - Google Fusion Tablesで変更を行うことができません(挿入、テーブルの追加など)

javascript - Dojoスパイダーチャートの固定軸

c# - ASP.NET MVC3、Razor-JavaScriptでのViewBagまたはURL変数の使用

javascript - jQueryを使用してiframe URLを変更する

javascript - リスト項目をdivの上に表示する

javascript - d3.jsデンドログラム:クリックしてノードの表示を切り替える方法

javascript - JSON.parseをオブジェクト配列に

javascript - FacebookアプリケーションのキャンバスページからWebページにユーザーを移動する方法

javascript - jQueryのスクロールDIVがジャンプして正しく配置されない