最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to sort array of objects based on a boolean property? - Stack Overflow

programmeradmin1浏览0评论

I have list of users presented in table. Active users should be sorted above the inactive users.

I am trying to make this sort using lodash sortBy function, but unsuccessfully.

Here is how userArray looks:

const userArray [
  { 
    // I need to show users which have disabled = false first 
    // and then users with disabled = true
    disabled: true,  // <==========
    email: "[email protected]",
    firstName: "Harriet",
    lastName: "Gaither",
    role: "claimsHandlerSupervisor",
    userId: "03VFpxtMWgY1jKDHDLcrWSw1qzx1",
  }, 
  {
   disabled: false,  // <===========
   email: "[email protected]",
   firstName: "Harriet",
   lastName: "Gaither",
   role: "claimsHandlerSupervisor",
   userId: "03VFpxtMWgY1jKDHDLcrWSw1qzx1",
 }, 
]

here is code pen with code with users array and sortBy loadsh function:

Any adivce is welcome.

I have list of users presented in table. Active users should be sorted above the inactive users.

I am trying to make this sort using lodash sortBy function, but unsuccessfully.

Here is how userArray looks:

const userArray [
  { 
    // I need to show users which have disabled = false first 
    // and then users with disabled = true
    disabled: true,  // <==========
    email: "[email protected]",
    firstName: "Harriet",
    lastName: "Gaither",
    role: "claimsHandlerSupervisor",
    userId: "03VFpxtMWgY1jKDHDLcrWSw1qzx1",
  }, 
  {
   disabled: false,  // <===========
   email: "[email protected]",
   firstName: "Harriet",
   lastName: "Gaither",
   role: "claimsHandlerSupervisor",
   userId: "03VFpxtMWgY1jKDHDLcrWSw1qzx1",
 }, 
]

here is code pen with code with users array and sortBy loadsh function: https://codepen.io/nikolatrajkovicq/pen/pGXdpM?editors=1112

Any adivce is welcome.

Share Improve this question edited Feb 22, 2019 at 13:48 adiga 35.2k9 gold badges65 silver badges87 bronze badges asked Feb 22, 2019 at 11:54 James DelaneyJames Delaney 1,7762 gold badges21 silver badges38 bronze badges 1
  • 2 you could just create 2 arrays with enabled and disabled users, than concat the disabled on the end of enabled, this will make disabled users to appear in the end (but not sorted in any order order) – Vencovsky Commented Feb 22, 2019 at 11:57
Add a comment  | 

2 Answers 2

Reset to default 21

You can use sort like this:

const userArray=[{disabled:true,email:"[email protected]",firstName:"Harriet",lastName:"Gaither",role:"claimsHandlerSupervisor",userId:"03VFpxtMWgY1jKDHDLcrWSw1qzx1",},{disabled:false,email:"[email protected]",firstName:"Harriet",lastName:"Gaither",role:"claimsHandlerSupervisor",userId:"03VFpxtMWgY1jKDHDLcrWSw1qzx1",},]

userArray.sort((a,b) => a.disabled - b.disabled)
console.log(userArray)

You can just subtract the boolean property inside the compareFunction. This works because of coercion

true - false === 1
false - true === -1
true - true === 0

You can use sort

const userArray = [{disabled:true,email:"[email protected]",firstName:"Harriet",lastName:"Gaither",role:"claimsHandlerSupervisor",userId:"03VFpxtMWgY1jKDHDLcrWSw1qzx1",},{disabled:false,email:"[email protected]",firstName:"Harriet",lastName:"Gaither",role:"claimsHandlerSupervisor",userId:"03VFpxtMWgY1jKDHDLcrWSw1qzx1",},{disabled:true,email:"[email protected]",firstName:"Hrriet",lastName:"Gither",role:"claisHandlerSupervisor",userId:"0VFpxtMWgY1jKDHDLcrWSw1qzx1",},]

let op = userArray.sort(({disabled:A}, {disabled:B})=> A-B)

console.log(op)

发布评论

评论列表(0)

  1. 暂无评论