Ich wollte das hier nur fallen lassen, da Guffas Antwort laut anderen Kommentaren an Zugkraft zu gewinnen scheint, das letzte Tertiär - was einer der negativen Kommentare zu dieser Antwort war, ist unnötig. Auch die Verwendung von Pfeilfunktionen lässt es viel sauberer erscheinen.
Es ist auch leicht erweiterbar, um Arrays von Objekten zu handhaben.
const first = "role";
data.sort((x, y) => first === x ? -1 : first === y)
Ich glaube, dies sollte auch die Sorge bewältigen, dass der Rest des Arrays betroffen ist. Wenn die Sortierfunktion eine Zahl kleiner als 0 zurückgibt (first === x), bewegt sich das Element zum Anfang des Arrays, wenn es 0 zurückgibt (first! == y), gibt es keine Bewegung, und wenn a Zahl größer als 0 (erstes === y), x bewegt sich zum Ende des Arrays, alles in Bezug auf x und y. Wenn daher weder x noch y dem gewünschten ersten Element entsprechen (oder dessen Kennung beim Sortieren von Objekten), gibt es keine Bewegung der beiden in Bezug zueinander.
Für ein Objekt:
const unsorted = [{'id': 'test'}, {'id': 'something'}, {'id': 'else'}];
const first = 'something';
const sorted = unsorted.sort((x,y) => x['id'] === first ? -1 : y['id'] === first);