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
  }

}