Javascript 如何按两个不同的属性对数组排序?

Javascript 如何按两个不同的属性对数组排序?,javascript,sorting,lodash,Javascript,Sorting,Lodash,我试图用lodash对数组进行排序,其中我按两个属性进行排序。我现在的那种看起来像这样,但不起作用 const sortedItems = orderBy(items, i => [i.Version,i.Active],['desc]) 我想要那种能做到这一点的人。发件人: [{ "Active": false, "Version": 1 }, { "Active": true, &qu

我试图用lodash对数组进行排序,其中我按两个属性进行排序。我现在的那种看起来像这样,但不起作用

const sortedItems = orderBy(items, i => [i.Version,i.Active],['desc])
我想要那种能做到这一点的人。发件人:

[{
    "Active": false,
    "Version": 1
  },
  {
    "Active": true,
    "Version": 3
  },
  {
    "Active": true,
    "Version": 2
  },
  {
    "Active": false,
    "Version": 1
  },
  {
    "Active": false,
    "Version": 4
  },
  {
    "Active": true,
    "Version": 5
  },
  {
    "Active": false,
    "Version": 1
  }
]
然后像这样分类

[
    {
        "Active": true,
        "Version": 5
      },
    {
        "Active": true,
        "Version": 3
      },
    {
      "Active": true,
      "Version": 2
    },
    {
        "Active": false,
        "Version": 4
      },

    {
      "Active": false,
      "Version": 1
    },
    {
      "Active": false,
      "Version": 1
    },

    {
      "Active": false,
      "Version": 1
    }
  ]

是否还有其他lodash函数可以为我执行此操作,或者我需要分别使用两个函数?

您可以使用JS数组排序方法来执行此操作。只需根据您的条件编写一个比较函数,并在排序时在JavaScript数组排序方法中使用该函数

const数据=[
{
活动:错误,
版本:1,,
},
{
主动:对,
版本:3,,
},
{
主动:对,
版本:2,
},
{
活动:错误,
版本:1,,
},
{
活动:错误,
版本:4,
},
{
主动:对,
版本:5,
},
{
活动:错误,
版本:1,,
},
];
常数cmp=(x,y)=>{
如果(x.Active==y.Active){
返回y.版本-x.版本;
}
返回x.Active控制台日志(ret)您可以使用类似于普通JavaScript的方法

let not_sorted = {[]};
let sorted = not_sorted.sort(sorter);

function sorter(a,b)
{
   if(a.Version>b.Version)
    {
      return -1;
    }
    else{
      return 1;
    }
}

它应该可以工作(您可以通过更改返回值来更改顺序)

var数据=[{
“主动”:假,
“版本”:1
},
{
“主动”:正确,
“版本”:3
},
{
“主动”:正确,
“版本”:2
},
{
“主动”:假,
“版本”:1
},
{
“主动”:假,
“版本”:4
},
{
“主动”:正确,
“版本”:5
},
{
“主动”:假,
“版本”:1
}
];
console.log(
data.sort((a,b)=>(b.Active-a.Active | | b.Version-a.Version))

);为什么不对数组使用
sort
函数呢?