【问题标题】:how to sort array of object by its value [duplicate]如何按其值对对象数组进行排序[重复]
【发布时间】:2017-05-17 07:39:13
【问题描述】:

我有数组响应,我想根据响应数组内对象中的断点变量对数组进行排序。我该怎么做?

var responsive = [
    {
        breakpoint: 1200,
        settings: {
            c: 300
        }
    },
    {
        breakpoint: 780,
        settings: {
            c: 180
        }
    },
    {
        breakpoint: 1400,
        settings: {
            c: 0
        }
    }
];

我尝试了 responsive.sort() 但仍然无法正常工作?我该怎么做?

【问题讨论】:

    标签: javascript jquery html arrays sorting


    【解决方案1】:

    您需要为sort() 方法提供您自己的自定义逻辑,以指定数组的子对象的哪个属性进行排序。试试这个:

    var responsive = [{
      breakpoint: 1200,
      settings: {
        c: 300
      }
    },{
      breakpoint: 780,
      settings: {
        c: 180
      }
    },{
      breakpoint: 1400,
      settings: {
        c: 0
      }
    }];
    
    responsive.sort(function(a, b) {
      return a.breakpoint > b.breakpoint;
    });
    
    console.dir(responsive);

    请注意,以上是升序排序。如果您需要降序,请将> 换成<

    【讨论】:

    • 你的排序函数不是对称的fn(a, b) === -fn(b, a)
    【解决方案2】:
    responsive.sort(function(a,b){
        return a.breakpoint < b.breakpoint;
    });
    

    【讨论】:

      猜你喜欢
      • 2013-02-24
      • 2014-08-25
      • 2013-07-26
      • 2017-04-27
      • 2016-11-25
      • 2012-01-17
      • 1970-01-01
      • 2020-10-11
      • 2015-02-25
      相关资源
      最近更新 更多