Весьма примитивная задачка, но тем не менее… Решается перебором массива свойств объекта и сортировкой этого самого массива пользовательской функцией. После сортировки снова обходим массив и записываем в новый(отсортированный) объект те же самые свойства.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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")); |
Результат:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { "prop_5": { "pos": 0 }, "prop_3": { "pos": 1 }, "prop_1": { "pos": 3 }, "prop_2": { "pos": 8 }, "prop_4": { "pos": 67 } } |