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
2 Answers
Reset to default 21You 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)