Array.sort() сломало меня

Меня в пятницу сломала сортировка. К примеру есть массив

var fields = ['title', 'status', 'changed', 'created', 'names'];

простой кейс, сделать так, что бы элемент массива с значение ‘changed’, выводился всегда первым. Вроде чего сложного ?
Читаем [доку,][1] вроде все просто и понятно, в таком кейсе.

 fields.sort( function (el) {
 if (el == 'changed') { 
 return -1 
 } else { 
 return 0
}
} )

по логике так должно работать, выставляем одному элементу “-1”, все остальные равны, но так оно вообще не сортирует или считет что уже отсортировано. Окей, говорим ему явно, что ‘changed’ у нас первый, у всех остальных “приоритет” ниже :

fields.sort( function (el) {
if (el == ‘changed’) {
return -1
} else {
return 1
}
} )

смотрим, отсортировало, вроде радуемся, но тут возникают сомнения и мы запускаем сортировку еще раз! и видим что “хвост” из элементов после ‘changed’, всегда перемешиваеться, такого поведения я не ожидал, хотя вполне обьяснимо…
Тогда как же правильно отсортировать данный массив?
[1]: https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

да, и сюда же, к первому моему варианту, а что если у нас действительно массив из всех равных элементов, кроме одного :

var arr = [5,5,5,5,5,3,5] 

и нужно отсортировать так что бы 3 - стало первым (знаю что просто .sort() так отсортирует, но смысл в том что, если у нас действительно все элементы одинаковы, кроме одного)

А использование сортировки - это обязательное условие? Можно было бы обойтись splice + unshift.

я так и сделал в задаче, но мне самому интересно понять, как работать с сортировкой в текущем кейсе