I have one array with multiple object,want to merge them by same keys without losing their values.
I try some of answer in stakoverflow but none of them help me.i want to do this with map/reduce but i don't know how can i retrieve key name of every object to check them.
let rows = [
{ row1: [{ val: "row1-val1" }, { val: "row1-val2" }] },
{ row1: [{ val: "row1-val3" }, { val: "row1-val4" }] },
{ row1: [{ val: "row1-val5" }, { val: "row1-val6" }] },
{ parag: { text: "sample test" } },
{ row2: [{ val: "row2-val1" }, { val: "row2-val2" }] },
{ row2: [{ val: "row2-val3" }, { val: "row2-val4" }] },
{ row2: [{ val: "row2-val5" }, { val: "row2-val6" }] }
];
i want this result:
let rows = [
{
row1: [
{ val: "row1-val1" },
{ val: "row1-val2" },
{ val: "row1-val3" },
{ val: "row1-val4" },
{ val: "row1-val5" },
{ val: "row1-val6" }
]
},
{ parag: { text: "sample test" } },
{
row2: [
{ val: "row2-val1" },
{ val: "row2-val2" },
{ val: "row2-val3" },
{ val: "row2-val4" },
{ val: "row2-val5" },
{ val: "row2-val6" }
]
}
];
You can do it with help of reduce
let rows = [{ row1: [{ val: "row1-val1" }, { val: "row1-val2" }] },{ row1: [{ val: "row1-val3" }, { val: "row1-val4" }] },{ row1: [{ val: "row1-val5" }, { val: "row1-val6" }] },{ parag: { text: "sample test" } },{ row2: [{ val: "row2-val1" }, { val: "row2-val2" }] },{ row2: [{ val: "row2-val3" }, { val: "row2-val4" }] },{ row2: [{ val: "row2-val5" }, { val: "row2-val6" }] }]; let op = rows.reduce((o,c)=>{ let key = Object.keys(c)[0]; if(o[key]){ o[key].push(...c[key]); } else { o[key] = c[key]; } return o; },{}) console.log(op)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.