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

Не могу понять как отсортировать объект и перевести его в номальный отсортированный map.
Прилетает вот такого вида объект:
statuses_default: {
    "Logon": {
        "order": 1,
        "data": {}
    },
    "Ready": {
        "order": 3,
        "data": {}
    },
    "Not Ready": {
        "order": 2,
        "data": {}
    },
    "Logoff": {
        "order": 0,
        "data": {}
    }
}

Необходимо получить Map отсортированный по значению ORDER:
new_map: {
    "Logoff": {
        "order": 0,
        "data": {}
    },
    "Logon": {
        "order": 1,
        "data": {}
    },
    "Not Ready": {
        "order": 2,
        "data": {}
    },
    "Ready": {
        "order": 3,
        "data": {}
    }
}


map сделать из объекта не проблема:
let st_map = new Map(Object.entries(statuses_default));


Данная функция выводит мне массив отсортированных значений только:
const b = [...st_map].map(e =>{return e[1].order;}).slice().sort(function(a, b) {
    return a - b;
});

// ["0", "1", "2", "3"]


Заранее спасибо за помощь.
  • Вопрос задан
  • 76 просмотров
Решения вопроса 1
Tim-A-2020
@Tim-A-2020
как вариант примерно так
const statuses_default = {
  "Logon": {
    "order": 1,
    "data": {}
  },
  "Ready": {
    "order": 3,
    "data": {}
  },
  "Not Ready": {
    "order": 2,
    "data": {}
  },
  "Logoff": {
    "order": 0,
    "data": {}
  }
}

let res = Object.entries(statuses_default).sort((a, b) => a[1].order - b[1].order);
console.log(res)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы