Показать сообщение отдельно
  #5 (permalink)  
Старый 26.05.2019, 18:18
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

рони, зачем сортировка вставками? )

var data = {
    "user 1": {
        company: 'Рога и копыта',
        name: 'Александр',
        projects: {
            projectID1: {
                role_right: 0
            }
        }
    },
    "user 2": {
        company: 'Копыта и рога',
        name: 'Петя',
        projects: {
            projectID1: {
                role_right: 0
            }
        }
    },
    "user 3": {
        company: 'Копыта и рога',
        name: 'Василий',
        projects: {
            projectID1: {
                role_right: 2
            }
        }
    }
};


var newData = Object.keys(data).reduce(function(r, userId) {
    var user = data[userId];
    var company = r.map[user.company];
    if (!company) {
        company = r.map[user.company] = {
            title: user.company,
            data: []
        };
        r.arr.push(company);
    }
    company.data.push({
        role_right: user.projects.projectID1.role_right,
        company : user.company,
        name : user.name
    });
    return r;
}, { arr: [], map: Object.create(null) }).arr;

newData.forEach(function (item) {
    item.data.sort(function(a, b) { return a.role_right - b.role_right; });
});

alert(JSON.stringify(newData, '', 4));
Ответить с цитированием