Сортировка массива объектов по ключу объекта - PullRequest
0 голосов
/ 31 марта 2020

Как мне отсортировать этот массив объектов, проверив ключ объекта?

const list = [
  { "firstValue": { "a": "1" } },
  { "secondValue": { "b": "1" } },
  { "thirdValue": { "c": "1" } },
  { "fourthValue": { "d": "1" } },
  { "fifthValue": { "e": "1" } }
]

Так что в этом случае я хочу, чтобы он был отсортирован следующим образом:

const list = [
  { "fifthValue": { "e": "1" } },
  { "firstValue": { "a": "1" } },
  { "fourthValue": { "d": "1" } },
  { "secondValue": { "b": "1" } },
  { "thirdValue": { "c": "1" } }
]

Это мой текущий код:

sortArrOfObjectsByKey(list);
document.write(JSON.stringify(list))

function sortArrOfObjectsByKey(arrToSort) {
    arrToSort.sort(function(a, b) {
       return a < b ? -1 : 1
    });
}

Но он не сортируется правильно. Обратите внимание, что не должно быть никакого нового контейнера для нового отсортированного массива / объекта. Помогите! Спасибо

1 Ответ

1 голос
/ 31 марта 2020

Вам нужно получить имя свойства, а затем отсортировать в соответствии с этим

const list = [
  { "firstValue": { "a": "1" } },
  { "secondValue": { "b": "1" } },
  { "thirdValue": { "c": "1" } },
  { "fourthValue": { "d": "1" } },
  { "fifthValue": { "e": "1" } }
]

list.sort( function(a, b) {
  const aKey = Object.keys(a)[0];
  const bKey = Object.keys(b)[0];
  return aKey.localeCompare(bKey)
} );

console.log(list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...