Здесь у вас есть другой подход ( без lodash ).По сути, мы создаем и массив типа [[key1, value1], [key2, value2],...]
, используя Object.entries(unsorted)
, затем сортируем этот массив (по возрастанию / убыванию), сравнивая values
, чтобы в итоге снова построить структуру объекта, которую вы изначально создали, сначала сопоставив пары [key, value]
объектам{key: value}
и затем присвоение всех этих объектов новому, используя Object.assign()
.
var unsorted = {a: 15, b: 1,c: 2, d: 4, e: 3, f: 6, g: 1};
let sortedAsc = Object.entries(unsorted)
.sort(([k1,v1], [k2,v2]) => v1 - v2)
.map(([x,y]) => ({[x]:y}));
let sortedDesc = Object.entries(unsorted)
.sort(([k1,v1], [k2,v2]) => v2 - v1)
.map(([x,y]) => ({[x]:y}));
let objSortedAsc = Object.assign({}, ...sortedAsc);
let objSortedDesc = Object.assign({}, ...sortedDesc);
console.log("ASC: ", objSortedAsc, "DESC: ", objSortedDesc);