Вам нужно получить массив значений объекта, и там уже сортировать
var x = {
0: {id: 0, src: 'image', sort: 1},
1: {id: 1, src: 'image', sort: 2},
2: {id: 2, src: 'image', sort: 0},
};
let values = Object.values(x);
values.sort(function (a, b) {
if (a.sort > b.sort) {
return 1;
}
if (a.sort < b.sort) {
return -1;
}
return 0;
});
Иногда объект не имеет ключей, и тогда он хорошо сортируется, как с этим бороться?
Чтобы и с ключами и без ключей сортировал?
Сейчас у вас объекты без sort идут в самый конец массива. Если нужно их расположить вначале, то вот так
values.sort(function (a, b) {
if (!('sort' in a)) return -1;
if (!('sort' in b)) return 1;
if (a.sort > b.sort) {
return 1;
}
if (a.sort < b.sort) {
return -1;
}
return 0;
});