I am trying to reorder an array by two conditions. Making sure that Pos 10
goes after single digits and that it follows a specific order after that.
I tried to give priority to the string that includes first
but then if I want to order alphanumerically it resets A to the top. How could I optain the expected result?
const arr = [
'Pos 10 second',
'Pos 10 A third',
'Pos 10 first',
'Pos 1 second',
'Pos 1 A third',
'Pos 1 first',
'Pos 2 second',
'Pos 2 A third',
'Pos 2 first',
]
const res = arr.sort((a, b) => {
if (a.includes('first')) {
return -1
} else {
return 1
}
}).sort((a, b) => a.localeCompare(b, 'en', { numeric: true}))
console.log(res)
/* Expected output
[
'Pos 1 first',
'Pos 1 second',
'Pos 1 A third',
'Pos 2 first',
'Pos 2 second',
'Pos 2 A third',
'Pos 10 first',
'Pos 10 second',
'Pos 10 A third'
] */