Cómo ordenar un array de strings según unas prioridades específicas

El otro día en un proyecto me surgió la necesidad de dejar preparado un código para que dado un array de strings, éste quedara ordenado en base a unas prioridades especificas.

Por ejemplo, dado un array de tipos de media (obtenido por ejemplo a través de una consulta a una API), me interesa que los tipo «foto» queden siempre al principio del array,  luego los tipo «audio», etc…

/* criteria: "foto","mapa","audio","video","interactivo" */
fnOrderMedia = makeFnSortArray("foto","audio","mapa","video","interactivo");

["audio", "mapa", "foto"].sort(fnOrderMedia)
// ["foto","audio","mapa"]

Sigue leyendo