Сортировка объекта по значениям свойств вложенных объектов

Весьма примитивная задачка, но тем не менее… Решается перебором массива свойств объекта и сортировкой этого самого массива пользовательской функцией. После сортировки снова обходим массив и записываем в новый(отсортированный) объект те же самые свойства.

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
    }
}

 

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *