Весьма примитивная задачка, но тем не менее… Решается перебором массива свойств объекта и сортировкой этого самого массива пользовательской функцией. После сортировки снова обходим массив и записываем в новый(отсортированный) объект те же самые свойства.
const obj = { "prop_1": { "pos": 3 }, "prop_2": { "pos": 8 }, "prop_3": { "pos": 1 }, "prop_4": { "pos": 67 }, "prop_5": { "pos": 0 } } objSorted = {} Object.keys(obj).sort(function (a, b) { return obj[a].pos - obj[b].pos; }).forEach(function(key, i){ objSorted[key] = obj[key]; }); console.log(JSON.stringify(objSorted, null,"\t"));
Результат:
{ "prop_5": { "pos": 0 }, "prop_3": { "pos": 1 }, "prop_1": { "pos": 3 }, "prop_2": { "pos": 8 }, "prop_4": { "pos": 67 } }