рони, зачем сортировка вставками? )
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));