Javascript: сортировка объектов (не массивов) по убыванию - PullRequest
0 голосов
/ 11 июля 2019

Я знаю, что объекты по умолчанию сортируются в порядке возрастания или по способу вставки, но мне нужен лучший способ сортировки объекта в порядке убывания.Пример:

Input x = {
  a: {},
  b: {},
  c: {},
  d: {}
}

Output: x = {
  d: {},
  c: {},
  b: {},
  a: {}
}

Я попробовал приведенное ниже решение, оно работает, но это хорошая практика или я могу получить что-то лучше от этого?

x= Object.keys(x).sort().reverse().reduce((obj, key) => {
    obj[key] = x[key]
    return obj
}, {})

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

Используйте карту, чтобы гарантировать порядок при использовании метода Object.entries() для сохранения пар ключ / значение.

  • Получить массив массивов из Object.entries()
  • .reverse() it
  • Преобразовать его в карту (Map() гарантирует порядок в соответствии с тем, как оно было введено)
  • Используйте Object.fromEntries () на карте для возврата объекта.

let obj = {a:{}, b:{}, c:{}, d:{}};
let rev = new Map(Object.entries(obj).reverse());
let ent = Object.fromEntries(rev);
console.log(ent);

См. таблицу совместимости для Object.fromEntries()

0 голосов
/ 11 июля 2019

Вы можете использовать метод Array.sort.Я считаю, что это будет сортировать только на глубине первого уровня

 const list = 
 { 
   a: "4",
   c: "2",
   b: "3",
   d: "1"
 }
 const sortedList = {};
 Object.keys(list).sort().reverse().forEach(function(key) {
  sortedList[key] = list[key];
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...