I have the following which is almost where I need to be
var baseData= [{
"id": 1,
"username": "JJ",
"lastLoggedIn": null,
"archive": false,
"forename": "J",
"surname": "J",
"band": "Band 7",
"role": "Developer",
"competency": "Kicks",
"employeeNumber": null,
"name": "Sedation"
}, {
"id": 1,
"username": "JJ",
"lastLoggedIn": null,
"archive": false,
"forename": "J",
"surname": "J",
"band": "Band 7",
"role": "Developer",
"competency": "Kicks",
"employeeNumber": null,
"name": "Safeguarding Level 3"
}, {
"id": 1,
"username": "JJ",
"lastLoggedIn": null,
"archive": false,
"forename": "J",
"surname": "J",
"band": "Band 7",
"role": "Developer",
"competency": "Kicks",
"employeeNumber": null,
"name": "Safeguarding Level 2"
}, {
"id": 276,
"username": "IH",
"lastLoggedIn": null,
"archive": false,
"forename": "I",
"surname": "Hashmi",
"band": "Band 8",
"role": "Chap",
"competency": "Pie",
"employeeNumber": null,
"name": "Safeguarding Level 3"
}, {
"id": 276,
"username": "IH",
"lastLoggedIn": null,
"archive": false,
"forename": "I",
"surname": "Hashmi",
"band": "Band 8",
"role": "Chap",
"competency": "Pie",
"employeeNumber": null,
"name": "Safeguarding Level 2"
}, {
"id": 276,
"username": "IH",
"lastLoggedIn": null,
"archive": false,
"forename": "I",
"surname": "Hashmi",
"band": "Band 8",
"role": "Chap",
"competency": "Pie",
"employeeNumber": null,
"name": "Major Incident"
}, {
"id": 277,
"username": "LC",
"lastLoggedIn": null,
"archive": false,
"forename": "L",
"surname": "C",
"band": "Band 9",
"role": "Lady",
"competency": "Pizza",
"employeeNumber": null,
"name": "WMH ED Nursing"
}, {
"id": 277,
"username": "LC",
"lastLoggedIn": null,
"archive": false,
"forename": "L",
"surname": "C",
"band": "Band 9",
"role": "Lady",
"competency": "Pizza",
"employeeNumber": null,
"name": "Sedation"
}, {
"id": 277,
"username": "LC",
"lastLoggedIn": null,
"archive": false,
"forename": "L",
"surname": "C",
"band": "Band 9",
"role": "Lady",
"competency": "Pizza",
"employeeNumber": null,
"name": "Safeguarding Level 3"
}, {
"id": 281,
"username": "MJ",
"lastLoggedIn": null,
"archive": false,
"forename": "M",
"surname": "J",
"band": "Band 9",
"role": "Solutions Developer Manager",
"competency": "Ninja",
"employeeNumber": "23546329",
"name": "Digital Team"
}, {
"id": 283,
"username": "CG",
"lastLoggedIn": null,
"archive": false,
"forename": "C",
"surname": "G",
"band": "5",
"role": "Senior Solutions Developer",
"competency": "LOL",
"employeeNumber": "23546205",
"name": "WMH ED Medics"
}, {
"id": 283,
"username": "CG",
"lastLoggedIn": null,
"archive": false,
"forename": "C",
"surname": "G",
"band": "5",
"role": "Senior Solutions Developer",
"competency": "LOL",
"employeeNumber": "23546205",
"name": "WMH ED Nursing"
}, {
"id": 283,
"username": "CG",
"lastLoggedIn": null,
"archive": false,
"forename": "C",
"surname": "G",
"band": "5",
"role": "Senior Solutions Developer",
"competency": "LOL",
"employeeNumber": "23546205",
"name": "Sedation"
}, {
"id": 283,
"username": "CG",
"lastLoggedIn": null,
"archive": false,
"forename": "C",
"surname": "G",
"band": "5",
"role": "Senior Solutions Developer",
"competency": "LOL",
"employeeNumber": "23546205",
"name": "Safeguarding Level 3"
}, {
"id": 283,
"username": "CG",
"lastLoggedIn": null,
"archive": false,
"forename": "C",
"surname": "G",
"band": "5",
"role": "Senior Solutions Developer",
"competency": "LOL",
"employeeNumber": "23546205",
"name": "Safeguarding Level 2"
}, {
"id": 283,
"username": "CG",
"lastLoggedIn": null,
"archive": false,
"forename": "C",
"surname": "G",
"band": "5",
"role": "Senior Solutions Developer",
"competency": "LOL",
"employeeNumber": "23546205",
"name": "Major Incident"
}, {
"id": 284,
"username": "Bob",
"lastLoggedIn": null,
"archive": true,
"forename": "Bob",
"surname": "Bob",
"band": "Bob",
"role": "Bob",
"competency": "Bob",
"employeeNumber": "XXX",
"name": "WMH ED Medics"
}, {
"id": 284,
"username": "Bob",
"lastLoggedIn": null,
"archive": true,
"forename": "Bob",
"surname": "Bob",
"band": "Bob",
"role": "Bob",
"competency": "Bob",
"employeeNumber": "XXX",
"name": "WMH ED Nursing"
}, {
"id": 284,
"username": "Bob",
"lastLoggedIn": null,
"archive": true,
"forename": "Bob",
"surname": "Bob",
"band": "Bob",
"role": "Bob",
"competency": "Bob",
"employeeNumber": "XXX",
"name": "Sedation"
}, {
"id": 284,
"username": "Bob",
"lastLoggedIn": null,
"archive": true,
"forename": "Bob",
"surname": "Bob",
"band": "Bob",
"role": "Bob",
"competency": "Bob",
"employeeNumber": "XXX",
"name": "Safeguarding Level 3"
}, {
"id": 284,
"username": "Bob",
"lastLoggedIn": null,
"archive": true,
"forename": "Bob",
"surname": "Bob",
"band": "Bob",
"role": "Bob",
"competency": "Bob",
"employeeNumber": "XXX",
"name": "Safeguarding Level 2"
}, {
"id": 284,
"username": "Bob",
"lastLoggedIn": null,
"archive": true,
"forename": "Bob",
"surname": "Bob",
"band": "Bob",
"role": "Bob",
"competency": "Bob",
"employeeNumber": "XXX",
"name": "Major Incident"
}];
var newData = [];
baseData.forEach(function(item, index) {
if (newData.length === 0) {
newData.push(item);
} else {
var dIndex = -1;
newData.forEach(function(itm, idx) {
if (item.id === itm.id) dIndex = idx;
});
if (dIndex !== -1) {
var oldname = newData[dIndex].name;
if (typeof(oldname).toString() === 'string') {
newData[dIndex].name = [oldname, item.name];
}
} else {
newData.push(item);
}
}
});
console.log(newData);
jsFiddle: https://jsfiddle.net/jeqdbn12/
This groups/reduces the object by the key called "name".
However it seems to nest the values for key, so using the array above, for Bob, I get:
{
archive: true,
band: "Bob",
competency: "Bob",
employeeNumber: "XXX",
forename: "Bob",
id: 284,
lastLoggedIn: null,
name: [[[[["WMH ED Medics", "WMH ED Nursing"], "Sedation"], "Safeguarding Level 3"], "Safeguarding Level 2"], "Major Incident"],
role: "Bob",
surname: "Bob",
username: "Bob"
}
However, what I need is for the key called "name" to be an array of values or a comma delimited string. Any advice?
So I need something like:
...
name: ["value1","value2"]
...