【问题标题】:How do I sort an array filled with objects, based on two values of the object? [duplicate]如何根据对象的两个值对填充有对象的数组进行排序? [复制]
【发布时间】:2014-12-22 13:07:35
【问题描述】:

我有一个填充了对象的数组。这些对象以两个值开头:sort1sort2

var arr_obj = [
    {
        sort1:'3000',
        sort2:'200',
        value:'Value1'
    },
     {
        sort1:'4000',
        sort2:'100',
        value:'Value2'
    },
     {
        sort1:'6000',
        sort2:'200',
        value:'Value3'
    },
     {
        sort1:'6000',
        sort2:'100',
        value:'Value4'
    },
     {
        sort1:'2000',
        sort2:'500',
        value:'Value5'
    }
];

如何根据sort1sort2 的值对对象进行排序。 Sort1 占主导地位,如果两个值具有相同的 sort1 值,则排序函数应查看 sort2 以确定哪个值先出现。

所以对于我的示例数组,输出应该变成。

[
    {
        sort1:'2000',
        sort2:'500',
        value:'Value5'
    },
    {
        sort1:'3000',
        sort2:'200',
        value:'Value1'
    },
     {
        sort1:'4000',
        sort2:'100',
        value:'Value2'
    },
    {
        sort1:'6000',
        sort2:'100',
        value:'Value4'
    },
     {
        sort1:'6000',
        sort2:'200',
        value:'Value3'
    }     
];

我尝试在数组上使用简单的sort(),但这可能会查看索引而不是第一个值。 有谁知道如何获得请求的输出?

FIDDLE

【问题讨论】:

    标签: javascript jquery arrays sorting object


    【解决方案1】:

    您可以在排序中设置比较功能。

    arr_obj.sort(function(a,b) {
      if (a.sort1 === b.sort1) {
        return a.sort2 - b.sort2;
      }
      return a.sort1 - b.sort1;
    });
    

    【讨论】:

      【解决方案2】:

      试试这个:-

      arr_obj.sort(function(prev,next){
        if(prev.sort1 != next.sort1){
          return prev.sort1 > next.sort1;
        }else{
         return prev.sort2 > next.sort2;
        }
      });
      

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 1970-01-01
        • 2013-11-25
        • 2014-05-29
        • 2020-09-22
        • 1970-01-01
        • 1970-01-01
        • 2013-02-24
        • 1970-01-01
        相关资源
        最近更新 更多