Вот простое решение JavaScript.
Поскольку вы хотите получить отсортированные ключи в результате, это решение не изменяет исходный массив, благодаря первой map
до sort
:
const data = [{ 'a': { id: 4 }}, { 'b': { id: 3 }}, { 'c': { id: 2 }}, { 'd': { id: 5 }}];
const sorted = data
.map(x => Object.entries(x)[0])
.sort((a, b) => b[1].id - a[1].id)
.map(x => x[0]);
console.log(sorted);
Если вас не волнует изменение исходного массива, вы можете напрямую отсортировать, используя Object.values()
, а затем вернуть первый ключ с помощью Object.keys()
:
const data = [{ 'a': { id: 4 }}, { 'b': { id: 3 }}, { 'c': { id: 2 }}, { 'd': { id: 5 }}];
const sorted = data
.sort((a, b) => Object.values(b)[0].id - Object.values(a)[0].id)
.map(x => Object.keys(x)[0]);
console.log(sorted);