Ordenar matriz por reglas predefinidas

Tengo una variedad de monedas["GBP", "EUR", "NOK", "DKK", "SKE", "USD", "SEK", "BGN"]. Me gustaría ordenarlo moviendo una lista predefinida si la moneda está presente al comienzo de la matriz. La lista predefinida es['EUR', 'USD', 'DKK', 'SKE', 'NOK', 'GBP']. Entonces en este caso debería regresar['EUR', 'USD', 'DKK', 'SKE', 'NOK', 'GBP', 'SEK', BGN'].

Pero en caso de que la matriz no filtrada no contenga todos los valores en la lista predefinida, también debe ordenarla correctamente. Por ejemplo :["GBP", "EUR", "NOK", "LTU", "ZGN"] debería verse como['EUR', 'NOK', 'GBP', 'LTU', 'ZGN'

Estaba tratando de ordenarlo usando esta función:

list.sort(c => ['EUR', 'USD', 'DKK', 'SKE', 'NOK', 'GBP'].indexOf(c))

pero coloca todas las monedas predefinidas al final de la lista, no al final. Tal vez hay una mejor manera de hacerlo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta