I am using angular 10
and I was wondering how can I sort this array
var dic = [
{ state: false, id: 1 },
{ state: true, id: 2} ,
{ state: false, id: 3 },
{ state: true, id: 4 },
{ state: false, id: 5 }
]
I want to sort by the value of the boolean state
, so the result goes this way:
[
{ state: true, id: 2 },
{ state: true, id: 4 },
{ state: false, id: 1 },
{ state: false, id: 3 },
{ state: false, id: 5 }
]
The true
value goes first in the array.
What property or something from typescript I have to use to do that?
Thank you!
You can do this using Array#sort
by converting the boolean
values of state
:
Number(true) //1
Number(false) //0
const dic = [
{ state: false, id: 1 },
{ state: true, id: 2 },
{ state: false, id: 3 },
{ state: true, id: 4 },
{ state: false, id: 5 }
];
dic.sort(({ state: stateA = false }, { state: stateB = false }) =>
Number(stateB) - Number(stateA)
);
console.log(dic);
You can complete it by doing simplify like this.
dic.sort((a, b) => b.state - a.state);
Explain:
We all know that:
false // 0
true // 1
So
false - true // -1
true - false // 1
true - true // 0
false - false // 0
Demo
const dic = [
{ state: false, id: 1 },
{ state: true, id: 2 },
{ state: false, id: 3 },
{ state: true, id: 4 },
{ state: false, id: 5 }
];
dic.sort((a, b) => b.state - a.state);
console.log(dic);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With