javascript - 在 Javascript 中对三维数组进行排序

标签 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.如何对每一层的数组进行排序?

一级可以通过 .sort(fn) 方法排序。我怎样才能传递到内部层次?

2.为什么indexOf方法无法找到前两层的元素?

如果是因为非字符串参数..如果项不是字符串,我如何在数组中搜索数组项?

3.for(var i in LIST) 是如何工作的? 我只需要对数组的索引和循环有基本的了解..

谢谢..

最佳答案

LIST 不是Javascript 中的三维数组,它只是一个数组。

//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);

关于javascript - 在 Javascript 中对三维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8974057/

相关文章:

javascript - 如何在js中将isi日期转换为iso

javascript - 将一个表的内容复制到另一个表中

c - realloc 删除 C 数组中已有的数据

c++ - 使用字符串数组 : arrays of pointers - Are they like multidimensional arrays?

C 与数组的负索引不一致的结果

java - 如何删除一个空的对象数组?

javascript - Backbone 帖子 JSON 为空?

使用 Django 回调的 Javascript getJSON 问题

c++ - 多维 std::valarray 和不等式

java - 二维数组——C 与 Java