I have an array of task objects and I want to convert them to a multidimensional object grouped by ownerID
var tasks = [
{taskID: "1", title: "task1", ownerID: "100", ownerName: "John", allocation: 80},
{taskID: "2", title: "task2", ownerID: "110", ownerName: "Sarah", allocation: 50},
{taskID: "3", title: "task3", ownerID: "110", ownerName: "Sarah", allocation: 50},
{taskID: "4", title: "task4", ownerID: "120", ownerName: "Mike", allocation: 25},
{taskID: "5", title: "task5", ownerID: "120", ownerName: "Mike", allocation: 45}];
This is my expected result:
var people = {
100: { ownerName: "John",
tasks: {
{taskID: "1", title: "task1", allocation: 80}
}
},
110: { ownerName: "Sarah",
tasks: {
{taskID: "2", title: "task2", allocation: 50}
{taskID: "3", title: "task3", allocation: 50}
}
},
120: { ownerName: "Mike",
tasks: {
{taskID: "4", title: "task4", allocation: 25}
{taskID: "5", title: "task5", allocation: 45}
}
},
};
I look at the source data and assigning each row
people[ownerID] = {};
person = people[ownerID];
person['ownerName'] = ownerName;
person['tasks'] = {};
person[taskID] = {};
task = person[taskId];
task['taskID'] = taskID;
It seems that it is grouped with ownerIDfine and creates a nested task object, but it will add only one task for each person.
Argh. Any help really appreciated.