如何通过布尔属性对对象数组进行排序

Jam*_*ran 5 javascript arrays sorting

我试图通过它的布尔属性对这个对象数组进行排序,但是,我很难找到一个使用javascripts'sort'方法的解决方案

我正在尝试对它进行排序,因此数组中的顶部项目将是'offer = true',然后是'shortlisted = true',最后是'rejected = true'.

var toSort = [{
    offer: false,
    shortlisted: true,
    rejected: false,
    stage: 2
}, {
    offer: false,
    shortlisted: false,
    rejected: true,
    stage: null
}, {
    offer: true,
    shortlisted: true,
    rejected: false,
    stage: null
}, {
    offer: false,
    shortlisted: true,
    rejected: false,
    stage: 1
}];
Run Code Online (Sandbox Code Playgroud)

这是我想要达到的最终结果

[{
    offer: true,
    shortlisted: true,
    rejected: false,
    stage: null
}, {
    offer: false,
    shortlisted: true,
    rejected: false,
    stage: 1
}, {
    offer: false,
    shortlisted: true,
    rejected: false,
    stage: 2
}, {
    offer: false,
    shortlisted: false,
    rejected: true,
    stage: null
}]
Run Code Online (Sandbox Code Playgroud)

排序此数组的最佳方法是什么?

Nen*_*car 11

你可以sort()像这样使用.

var toSort = [{
  offer: false,
  shortlisted: true,
  rejected: false,
  stage: 2
}, {
  offer: false,
  shortlisted: false,
  rejected: true,
  stage: null
}, {
  offer: true,
  shortlisted: true,
  rejected: false,
  stage: null
}, {
  offer: false,
  shortlisted: true,
  rejected: false,
  stage: 1
}];

var result = toSort.sort(function(a, b) {
  return b.offer - a.offer ||
    b.shortlisted - a.shortlisted ||
    b.rejected - a.rejected
})

console.log(result)
Run Code Online (Sandbox Code Playgroud)