JSFiddle - React, Tailwind, and code Playground

HTML

<pre id="out"></pre>

JavaScript

//sort this
var data = [
    { id: 1, start: null, end: new Date('1997/01/01'), rank: 90 },    
    { id: 2, start: null, end: new Date('1997/01/01'), rank: 91 },
    { id: 3, start: null, end: new Date('1997/01/01'), rank: 92 },
    { id: 4, start: new Date('1997/01/01'), end: new Date('1997/09/01'), rank: 93 },
    { id: 5, start: new Date('1998/01/01'), end: new Date('1997/09/01'), rank: 95 },
    { id: 6, start: new Date('1998/01/01'), end: new Date('1997/09/01'), rank: 94 },
    { id: 7, start: new Date('1991/01/01'), end: new Date('1997/06/01'), rank: 96 },
    { id: 8, start: new Date('1992/01/01'), end: new Date('1997/05/01'), rank: 97 },
    { id: 9, start: new Date('1993/01/01'), end: new Date('1997/04/01'), rank: 98 },
    { id: 10, start: new Date('1994/01/01'), end: new Date('1997/03/01'), rank: 99 },
    { id: 11, start: new Date('1995/01/01'), end: new Date('1997/02/01'), rank: 90 },
];

var generic_date =  new Date(2070, 1, 1);
checkDate = function(date) {
  return Date.parse(date) ? new Date(date): generic_date;
}

function sortData() {  
  data.sort(function(a,b){
    var deltaEnd = checkDate(b.end) - checkDate(a.end);
    if(deltaEnd) return deltaEnd;

		var deltaRank = a.rank - b.rank;
    if (deltaRank) return deltaRank;

    var deltaStart = checkDate(b.start) - checkDate(a.start);
    if(deltaStart) return deltaStart;
    
    return 0;
  });
}

sortData();
document.getElementById('out').innerHTML = JSON.stringify(data, null, 2);