JSFiddle - React, Tailwind, and code Playground

JavaScript

function sortByExt(files) {
  return files.map(fileName => {
    const p = fileName.indexOf('.');
    const name = +fileName.slice(0, p);
    const ext = fileName.slice(p + 1);
    return [fileName, name, ext];
  }).sort(([, nameA, extA], [, nameB, extB]) => (extA < extB
    ? 1
    : (extA > extB ? -1 : nameA - nameB)
  )).map(([fileName]) => fileName);
}


console.log(sortByExt(['1.cad', '1.aa.aa', '2.bat', '1.aa', '.aa', '1.aa.doc'])) // ['.aa', '1.aa', '1.aa.aa', '1.aa.doc', '1.cad', '2.bat']