Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
sort with compare function solution in Clear category for Sort by Extension by Sim0000
import assert from "assert";
function sortByExt(fileList: string[]) {
function getExt(filename: string): string { // get ext
const n = filename.lastIndexOf('.');
return n <= 0 ? '' : filename.slice(n);
}
function compare(filename1: string, filename2: string): number {
const ext1 = getExt(filename1);
const ext2 = getExt(filename2);
if(ext1 < ext2) return -1;
if(ext1 > ext2) return 1;
return filename1 < filename2 ? -1 : filename1 > filename2 ? 1 : 0;
}
return fileList.sort(compare);
}
console.log('Example:');
console.log(sortByExt(['1.cad', '1.bat', '1.aa']));
// These "asserts" are used for self-checking
assert.deepEqual(sortByExt(['1.cad', '1.bat', '1.aa']), ['1.aa', '1.bat', '1.cad']);
assert.deepEqual(sortByExt(['1.cad', '1.bat', '1.aa', '2.bat']), ['1.aa', '1.bat', '2.bat', '1.cad']);
assert.deepEqual(sortByExt(['1.cad', '1.bat', '1.aa', '.bat']), ['.bat', '1.aa', '1.bat', '1.cad']);
assert.deepEqual(sortByExt(['1.cad', '1.bat', '.aa', '.bat']), ['.aa', '.bat', '1.bat', '1.cad']);
assert.deepEqual(sortByExt(['1.cad', '1.', '1.aa']), ['1.', '1.aa', '1.cad']);
assert.deepEqual(sortByExt(['1.cad', '1.bat', '1.aa', '1.aa.doc']), ['1.aa', '1.bat', '1.cad', '1.aa.doc']);
assert.deepEqual(sortByExt(['1.cad', '1.bat', '1.aa', '.aa.doc']), ['1.aa', '1.bat', '1.cad', '.aa.doc']);
console.log("Coding complete? Click 'Check' to earn cool rewards!");
May 22, 2020