JSFiddle - React, Tailwind, and code Playground
by jasonwilczak
JavaScript
var data = [
{"id":1,"name":"Wilczak, Jason","status":"Locked Out"},
{"id":2,"name":"Wilczak, Jason","status":"10/03/2019"},
{"id":3,"name":"Sundar, Gopal","status":"Locked Out"},
{"id":4,"name":"Sundar, Gopal","status":"10/01/2019"},
{"id":5,"name":"Carlson, Bob","status":"10/14/2019"},
{"id":6,"name":"Jeepers, Creepers","status":"Pending"}
];
data.sort((a,b)=>{
const aStatusNumber = convertStatusToNumber(a.status);
const bStatusNumber = convertStatusToNumber(b.status);
if(aStatusNumber !== bStatusNumber) return aStatusNumber - bStatusNumber;
return a.name.localeCompare(b.name);
})
const actualOrder = data.map(a=>a.id).join(',');
alert(`Expected: 3,1,6,4,2,5 - Actual: ${actualOrder}`)
function convertStatusToNumber(status) {
switch(status) {
case "Locked Out":
return 0;
case "Pending":
return 1;
default:
return new Date(status).getTime(); //this is dangerous like this, just for example
}
}