Group objects in an array by using key and form new array object
Below is my array object
[{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
How to combine the objects in the array by using role and form new array objects in the below format.
[{role : 'Role 1', list: [{name: 'A', slid: 'a'}, {name: 'B', slid: 'b'}]},
{role : 'Role 2', list: [{name: 'X, slid: 'x'}, {name: 'Y', slid: 'y'}]},
{role : 'Role 3', list: [{name: 'Z', slid: 'z'}]}]
I have looked into many examples, but could not find a solution.
javascript arrays
add a comment |
Below is my array object
[{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
How to combine the objects in the array by using role and form new array objects in the below format.
[{role : 'Role 1', list: [{name: 'A', slid: 'a'}, {name: 'B', slid: 'b'}]},
{role : 'Role 2', list: [{name: 'X, slid: 'x'}, {name: 'Y', slid: 'y'}]},
{role : 'Role 3', list: [{name: 'Z', slid: 'z'}]}]
I have looked into many examples, but could not find a solution.
javascript arrays
add a comment |
Below is my array object
[{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
How to combine the objects in the array by using role and form new array objects in the below format.
[{role : 'Role 1', list: [{name: 'A', slid: 'a'}, {name: 'B', slid: 'b'}]},
{role : 'Role 2', list: [{name: 'X, slid: 'x'}, {name: 'Y', slid: 'y'}]},
{role : 'Role 3', list: [{name: 'Z', slid: 'z'}]}]
I have looked into many examples, but could not find a solution.
javascript arrays
Below is my array object
[{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
How to combine the objects in the array by using role and form new array objects in the below format.
[{role : 'Role 1', list: [{name: 'A', slid: 'a'}, {name: 'B', slid: 'b'}]},
{role : 'Role 2', list: [{name: 'X, slid: 'x'}, {name: 'Y', slid: 'y'}]},
{role : 'Role 3', list: [{name: 'Z', slid: 'z'}]}]
I have looked into many examples, but could not find a solution.
javascript arrays
javascript arrays
edited Nov 24 '18 at 14:12
Eddie
19.2k51641
19.2k51641
asked Nov 24 '18 at 14:07
user3125637user3125637
65
65
add a comment |
add a comment |
4 Answers
4
active
oldest
votes
You can use reduce to group the array into an object. Use Object.values to convert the object into an array.
var arr = [{"role":"Role 1","name":"A","slid":"a"},{"role":"Role 1","name":"B","slid":"b"},{"role":"Role 2","name":"X","slid":"x"},{"role":"Role 2","name":"Y","slid":"y"},{"role":"Role 3","name":"Z","slid":"z"}];
var result = Object.values(arr.reduce((c, {role,...r}) => {
c[role] = c[role] || {role,list: };
c[role].list.push(r);
return c;
}, {}));
console.log( result );add a comment |
const arr = [{
role: 'Role 1',
name: 'A',
slid: 'a',
}, {
role: 'Role 1',
name: 'B',
slid: 'b',
}, {
role: 'Role 2',
name: 'X',
slid: 'x',
}, {
role: 'Role 2',
name: 'Y',
slid: 'y',
}, {
role: 'Role 3',
name: 'Z',
slid: 'z',
}];
// We go through every array element
const ret = arr.reduce((tmp, x) => {
// Does we have already the x.role stored in our final array ?
const elem = tmp.find(y => y.role === x.role);
// Yes, so we push a new value inside of it
if (elem) {
elem.list.push({
name: x.name,
slid: x.slid
});
return tmp;
}
// No, so we create a new array element
tmp.push({
role: x.role,
list: [{
name: x.name,
slid: x.slid
}],
});
return tmp;
}, );
console.log(ret);
Thanks for a quick response.
– user3125637
Nov 24 '18 at 14:16
add a comment |
Just a different approach with Array.map
let input = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
let res = input.sort((a,b) => a.role.localeCompare(b.role))
.map(({ role, ...rest }) => ({ role, list: [rest] }))
.flatMap(({ role, list }, i, t) =>
role == (t[i+1] && t[i+1].role)
? (t[i+1].list.unshift(list[0]), )
: { role, list })
console.log(res)add a comment |
You could use reduce function to solve the issue
const arr = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
var groupBy = function(array, key) {
return array.reduce(function(reduceVal, obj) {
(reduceVal[obj[key]] = reduceVal[obj[key]] || ).push(obj);
return reduceVal;
}, {});
};
console.log(groupBy(arr, 'role'));
//{Role 1: Array(2), Role 2: Array(2), Role 3: Array(1)}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53458983%2fgroup-objects-in-an-array-by-using-key-and-form-new-array-object%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
4 Answers
4
active
oldest
votes
4 Answers
4
active
oldest
votes
active
oldest
votes
active
oldest
votes
You can use reduce to group the array into an object. Use Object.values to convert the object into an array.
var arr = [{"role":"Role 1","name":"A","slid":"a"},{"role":"Role 1","name":"B","slid":"b"},{"role":"Role 2","name":"X","slid":"x"},{"role":"Role 2","name":"Y","slid":"y"},{"role":"Role 3","name":"Z","slid":"z"}];
var result = Object.values(arr.reduce((c, {role,...r}) => {
c[role] = c[role] || {role,list: };
c[role].list.push(r);
return c;
}, {}));
console.log( result );add a comment |
You can use reduce to group the array into an object. Use Object.values to convert the object into an array.
var arr = [{"role":"Role 1","name":"A","slid":"a"},{"role":"Role 1","name":"B","slid":"b"},{"role":"Role 2","name":"X","slid":"x"},{"role":"Role 2","name":"Y","slid":"y"},{"role":"Role 3","name":"Z","slid":"z"}];
var result = Object.values(arr.reduce((c, {role,...r}) => {
c[role] = c[role] || {role,list: };
c[role].list.push(r);
return c;
}, {}));
console.log( result );add a comment |
You can use reduce to group the array into an object. Use Object.values to convert the object into an array.
var arr = [{"role":"Role 1","name":"A","slid":"a"},{"role":"Role 1","name":"B","slid":"b"},{"role":"Role 2","name":"X","slid":"x"},{"role":"Role 2","name":"Y","slid":"y"},{"role":"Role 3","name":"Z","slid":"z"}];
var result = Object.values(arr.reduce((c, {role,...r}) => {
c[role] = c[role] || {role,list: };
c[role].list.push(r);
return c;
}, {}));
console.log( result );You can use reduce to group the array into an object. Use Object.values to convert the object into an array.
var arr = [{"role":"Role 1","name":"A","slid":"a"},{"role":"Role 1","name":"B","slid":"b"},{"role":"Role 2","name":"X","slid":"x"},{"role":"Role 2","name":"Y","slid":"y"},{"role":"Role 3","name":"Z","slid":"z"}];
var result = Object.values(arr.reduce((c, {role,...r}) => {
c[role] = c[role] || {role,list: };
c[role].list.push(r);
return c;
}, {}));
console.log( result );var arr = [{"role":"Role 1","name":"A","slid":"a"},{"role":"Role 1","name":"B","slid":"b"},{"role":"Role 2","name":"X","slid":"x"},{"role":"Role 2","name":"Y","slid":"y"},{"role":"Role 3","name":"Z","slid":"z"}];
var result = Object.values(arr.reduce((c, {role,...r}) => {
c[role] = c[role] || {role,list: };
c[role].list.push(r);
return c;
}, {}));
console.log( result );var arr = [{"role":"Role 1","name":"A","slid":"a"},{"role":"Role 1","name":"B","slid":"b"},{"role":"Role 2","name":"X","slid":"x"},{"role":"Role 2","name":"Y","slid":"y"},{"role":"Role 3","name":"Z","slid":"z"}];
var result = Object.values(arr.reduce((c, {role,...r}) => {
c[role] = c[role] || {role,list: };
c[role].list.push(r);
return c;
}, {}));
console.log( result );answered Nov 24 '18 at 14:16
EddieEddie
19.2k51641
19.2k51641
add a comment |
add a comment |
const arr = [{
role: 'Role 1',
name: 'A',
slid: 'a',
}, {
role: 'Role 1',
name: 'B',
slid: 'b',
}, {
role: 'Role 2',
name: 'X',
slid: 'x',
}, {
role: 'Role 2',
name: 'Y',
slid: 'y',
}, {
role: 'Role 3',
name: 'Z',
slid: 'z',
}];
// We go through every array element
const ret = arr.reduce((tmp, x) => {
// Does we have already the x.role stored in our final array ?
const elem = tmp.find(y => y.role === x.role);
// Yes, so we push a new value inside of it
if (elem) {
elem.list.push({
name: x.name,
slid: x.slid
});
return tmp;
}
// No, so we create a new array element
tmp.push({
role: x.role,
list: [{
name: x.name,
slid: x.slid
}],
});
return tmp;
}, );
console.log(ret);
Thanks for a quick response.
– user3125637
Nov 24 '18 at 14:16
add a comment |
const arr = [{
role: 'Role 1',
name: 'A',
slid: 'a',
}, {
role: 'Role 1',
name: 'B',
slid: 'b',
}, {
role: 'Role 2',
name: 'X',
slid: 'x',
}, {
role: 'Role 2',
name: 'Y',
slid: 'y',
}, {
role: 'Role 3',
name: 'Z',
slid: 'z',
}];
// We go through every array element
const ret = arr.reduce((tmp, x) => {
// Does we have already the x.role stored in our final array ?
const elem = tmp.find(y => y.role === x.role);
// Yes, so we push a new value inside of it
if (elem) {
elem.list.push({
name: x.name,
slid: x.slid
});
return tmp;
}
// No, so we create a new array element
tmp.push({
role: x.role,
list: [{
name: x.name,
slid: x.slid
}],
});
return tmp;
}, );
console.log(ret);
Thanks for a quick response.
– user3125637
Nov 24 '18 at 14:16
add a comment |
const arr = [{
role: 'Role 1',
name: 'A',
slid: 'a',
}, {
role: 'Role 1',
name: 'B',
slid: 'b',
}, {
role: 'Role 2',
name: 'X',
slid: 'x',
}, {
role: 'Role 2',
name: 'Y',
slid: 'y',
}, {
role: 'Role 3',
name: 'Z',
slid: 'z',
}];
// We go through every array element
const ret = arr.reduce((tmp, x) => {
// Does we have already the x.role stored in our final array ?
const elem = tmp.find(y => y.role === x.role);
// Yes, so we push a new value inside of it
if (elem) {
elem.list.push({
name: x.name,
slid: x.slid
});
return tmp;
}
// No, so we create a new array element
tmp.push({
role: x.role,
list: [{
name: x.name,
slid: x.slid
}],
});
return tmp;
}, );
console.log(ret);const arr = [{
role: 'Role 1',
name: 'A',
slid: 'a',
}, {
role: 'Role 1',
name: 'B',
slid: 'b',
}, {
role: 'Role 2',
name: 'X',
slid: 'x',
}, {
role: 'Role 2',
name: 'Y',
slid: 'y',
}, {
role: 'Role 3',
name: 'Z',
slid: 'z',
}];
// We go through every array element
const ret = arr.reduce((tmp, x) => {
// Does we have already the x.role stored in our final array ?
const elem = tmp.find(y => y.role === x.role);
// Yes, so we push a new value inside of it
if (elem) {
elem.list.push({
name: x.name,
slid: x.slid
});
return tmp;
}
// No, so we create a new array element
tmp.push({
role: x.role,
list: [{
name: x.name,
slid: x.slid
}],
});
return tmp;
}, );
console.log(ret);const arr = [{
role: 'Role 1',
name: 'A',
slid: 'a',
}, {
role: 'Role 1',
name: 'B',
slid: 'b',
}, {
role: 'Role 2',
name: 'X',
slid: 'x',
}, {
role: 'Role 2',
name: 'Y',
slid: 'y',
}, {
role: 'Role 3',
name: 'Z',
slid: 'z',
}];
// We go through every array element
const ret = arr.reduce((tmp, x) => {
// Does we have already the x.role stored in our final array ?
const elem = tmp.find(y => y.role === x.role);
// Yes, so we push a new value inside of it
if (elem) {
elem.list.push({
name: x.name,
slid: x.slid
});
return tmp;
}
// No, so we create a new array element
tmp.push({
role: x.role,
list: [{
name: x.name,
slid: x.slid
}],
});
return tmp;
}, );
console.log(ret);const arr = [{
role: 'Role 1',
name: 'A',
slid: 'a',
}, {
role: 'Role 1',
name: 'B',
slid: 'b',
}, {
role: 'Role 2',
name: 'X',
slid: 'x',
}, {
role: 'Role 2',
name: 'Y',
slid: 'y',
}, {
role: 'Role 3',
name: 'Z',
slid: 'z',
}];
// We go through every array element
const ret = arr.reduce((tmp, x) => {
// Does we have already the x.role stored in our final array ?
const elem = tmp.find(y => y.role === x.role);
// Yes, so we push a new value inside of it
if (elem) {
elem.list.push({
name: x.name,
slid: x.slid
});
return tmp;
}
// No, so we create a new array element
tmp.push({
role: x.role,
list: [{
name: x.name,
slid: x.slid
}],
});
return tmp;
}, );
console.log(ret);answered Nov 24 '18 at 14:14
Grégory NEUTGrégory NEUT
9,17821839
9,17821839
Thanks for a quick response.
– user3125637
Nov 24 '18 at 14:16
add a comment |
Thanks for a quick response.
– user3125637
Nov 24 '18 at 14:16
Thanks for a quick response.
– user3125637
Nov 24 '18 at 14:16
Thanks for a quick response.
– user3125637
Nov 24 '18 at 14:16
add a comment |
Just a different approach with Array.map
let input = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
let res = input.sort((a,b) => a.role.localeCompare(b.role))
.map(({ role, ...rest }) => ({ role, list: [rest] }))
.flatMap(({ role, list }, i, t) =>
role == (t[i+1] && t[i+1].role)
? (t[i+1].list.unshift(list[0]), )
: { role, list })
console.log(res)add a comment |
Just a different approach with Array.map
let input = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
let res = input.sort((a,b) => a.role.localeCompare(b.role))
.map(({ role, ...rest }) => ({ role, list: [rest] }))
.flatMap(({ role, list }, i, t) =>
role == (t[i+1] && t[i+1].role)
? (t[i+1].list.unshift(list[0]), )
: { role, list })
console.log(res)add a comment |
Just a different approach with Array.map
let input = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
let res = input.sort((a,b) => a.role.localeCompare(b.role))
.map(({ role, ...rest }) => ({ role, list: [rest] }))
.flatMap(({ role, list }, i, t) =>
role == (t[i+1] && t[i+1].role)
? (t[i+1].list.unshift(list[0]), )
: { role, list })
console.log(res)Just a different approach with Array.map
let input = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
let res = input.sort((a,b) => a.role.localeCompare(b.role))
.map(({ role, ...rest }) => ({ role, list: [rest] }))
.flatMap(({ role, list }, i, t) =>
role == (t[i+1] && t[i+1].role)
? (t[i+1].list.unshift(list[0]), )
: { role, list })
console.log(res)let input = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
let res = input.sort((a,b) => a.role.localeCompare(b.role))
.map(({ role, ...rest }) => ({ role, list: [rest] }))
.flatMap(({ role, list }, i, t) =>
role == (t[i+1] && t[i+1].role)
? (t[i+1].list.unshift(list[0]), )
: { role, list })
console.log(res)let input = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
let res = input.sort((a,b) => a.role.localeCompare(b.role))
.map(({ role, ...rest }) => ({ role, list: [rest] }))
.flatMap(({ role, list }, i, t) =>
role == (t[i+1] && t[i+1].role)
? (t[i+1].list.unshift(list[0]), )
: { role, list })
console.log(res)answered Nov 24 '18 at 14:49
Nitish NarangNitish Narang
2,9601815
2,9601815
add a comment |
add a comment |
You could use reduce function to solve the issue
const arr = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
var groupBy = function(array, key) {
return array.reduce(function(reduceVal, obj) {
(reduceVal[obj[key]] = reduceVal[obj[key]] || ).push(obj);
return reduceVal;
}, {});
};
console.log(groupBy(arr, 'role'));
//{Role 1: Array(2), Role 2: Array(2), Role 3: Array(1)}
add a comment |
You could use reduce function to solve the issue
const arr = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
var groupBy = function(array, key) {
return array.reduce(function(reduceVal, obj) {
(reduceVal[obj[key]] = reduceVal[obj[key]] || ).push(obj);
return reduceVal;
}, {});
};
console.log(groupBy(arr, 'role'));
//{Role 1: Array(2), Role 2: Array(2), Role 3: Array(1)}
add a comment |
You could use reduce function to solve the issue
const arr = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
var groupBy = function(array, key) {
return array.reduce(function(reduceVal, obj) {
(reduceVal[obj[key]] = reduceVal[obj[key]] || ).push(obj);
return reduceVal;
}, {});
};
console.log(groupBy(arr, 'role'));
//{Role 1: Array(2), Role 2: Array(2), Role 3: Array(1)}
You could use reduce function to solve the issue
const arr = [{ role : 'Role 1', name: 'A', slid: 'a'}, {role : 'Role 1', name: 'B',slid: 'b'}, {role : 'Role 2', name: 'X', slid: 'x'}, {role : 'Role 2',name: 'Y', slid: 'y'},{role : 'Role 3',name: 'Z',slid: 'z'}]
var groupBy = function(array, key) {
return array.reduce(function(reduceVal, obj) {
(reduceVal[obj[key]] = reduceVal[obj[key]] || ).push(obj);
return reduceVal;
}, {});
};
console.log(groupBy(arr, 'role'));
//{Role 1: Array(2), Role 2: Array(2), Role 3: Array(1)}
answered Nov 27 '18 at 11:12
Jayampathy WijesenaJayampathy Wijesena
19678
19678
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53458983%2fgroup-objects-in-an-array-by-using-key-and-form-new-array-object%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown