Upon reflection, I am sharing the solution for those who expressed doubt in my approach.
var obj = {
item_1: {name:'aaa',weight:4},
item_2: {name:'ddd',weight:2},
item_5: {name:'eee',weight:0},
item_3: {name:'ccc',weight:3},
item_6: {name:'ccc',weight:23},
item_4: {name:'eee',weight:1},
}
var arr = _.toPairs(obj)
console.log(arr)
var sortedArr = arr.sort(function(a,b){ return b[1].weight - a[1].weight})
console.log(sortedArr)
var sortedObj = _.fromPairs(sortedArr)
console.log(JSON.stringify(sortedObj))
Explore and experiment with the code here: sort Object based on 'weight'property
Knowledge is key to understanding.
I have an array of objects that looks like this:
var obj = {
item_1: {name:'aaa',weight:4},
item_2: {name:'ddd',weight:2},
item_3: {name:'ccc',weight:3},
item_4: {name:'eee',weight:1},
}
When using methods like _.orderBy or _.sortBy()
For instance: _.orderBy(obj,['weight'])
.
The resulting sorted array does not retain the original keys
0: {name: "eee", weight: 1}
1: {name: "ddd", weight: 2}
2: {name: "ccc", weight: 3}
3: {name: "aaa", weight: 4}
I require assistance in preserving the initial keys like item_1, item_2 etc. Can anyone help? Thank you.