I have an array of task objects and I want to transform these into 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 output:
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'm looping through the original data and assigning each row
people[ownerID] = {};
person = people[ownerID];
person['ownerName'] = ownerName;
person['tasks'] = {};
person[taskID] = {};
task = person[taskId];
task['taskID'] = taskID;
This seems to group by ownerID fine and creates a nested object of tasks but it will only add one task for each person.
Argh. Any help really appreciated.
tasksshould be an array, not an object.taskID, then you need to use it in the example as well.