Tengo una matriz de objetos, estos objetos contienen fechas y uno de ellos contiene un
noDate: truevalor. Me gustaría ordenar estas fechas, actualmente puedo ordenarlas así:
data.sort((a, b) => a.date - b.date)Pero necesito ordenarlos para que el objeto con el valor verdadero de noDate se convierta en el primero en la matriz. Intenté esto, pero no funciona correctamente:
data.sort((a, b) => a.noDate === true ? -1 : a.date - b.date)Puede tomar el valor booleano/ undefined y tomar el delta convirtiendo primero el valor en un valor booleano negado. Luego ordenar por date .
const data = [ { id: 0, noDate: true }, { id: 1, date: new Date('2021-10-30') }, { id: 2, date: new Date('2020-10-30') }, { id: 3, noDate: true }, ]; data.sort((a, b) => !a.noDate - !b.noDate || a.date - b.date); console.log(data); data.sort((a, b) => !b.noDate - !a.noDate || a.date - b.date); console.log(data); .as-console-wrapper { max-height: 100% !important; top: 0; }