【问题标题】:How to sort javascript object which contains arrays?如何对包含数组的javascript对象进行排序?
【发布时间】:2014-12-20 18:12:44
【问题描述】:

我有一个名为 classes 的对象,它看起来像这样:

Object {d1: Array[6], a1: Array[6]};

我添加了一个新数组:classes.b1 = [{"id":1,"vprasan":true},{"id":2,"vprasan":true}]

我怎样才能对这个对象进行排序,所以它看起来像这样:Object {a1: Array[6], b1: Array[6], d1: Array[6]};

【问题讨论】:

    标签: javascript arrays sorting


    【解决方案1】:

    你不能。 JavaScript 对象中属性的顺序是未定义的。

    来自ECMAScript Third Edition (pdf)的对象定义:

    4.3.3 对象
    对象是 类型对象。 这是一个无序的属性集合 包含原始值、对象或 功能。存储在一个函数 对象的属性称为 方法。

    【讨论】:

      【解决方案2】:

      如另一个答案中所述,您无法对对象进行排序,因此它“看起来”以特定方式,因为对象本质上是无序的。但是,我对您的问题的解释更为宽松;在我看来,您想按对象键“a1”、“b1”、“d1”等进行排序。这样做很容易,然后您可以根据排序的键处理您的对象:

      var classes = {d1: ['item1'], a1: ['item1','item2']};
      classes.b1 = ['item1', 'item2', 'item3'];
      
      var keys = Object.keys(classes);
      keys.sort();
      
      for (var i=0, n=keys.length; i<n; i++) {
          console.log(keys[i]);
          console.log(classes[keys[i]].length);
      }
      

      输出:

      a1
      2
      b1
      3
      d1
      1
      

      【讨论】:

        【解决方案3】:

        是的,如果顺序很重要,您必须将其放入数组中:

        var classes = [
            {name: 'a1', value: Array[6]},
            {name: 'b1', value: Array[6]},
            {name: 'd1', value: Array[6]}
        ];
        

        然后查看这个问题进行排序。

        Javascript - sort objects in an array alphabetically on one property of the array

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-07-07
          • 2017-09-13
          • 1970-01-01
          • 2020-11-02
          • 2015-02-17
          • 2017-05-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多