Меня в пятницу сломала сортировка. К примеру есть массив
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