[
{ Phase: "Phase 1",Value1: "5", Value2: "4" },
{ Phase: "Phase 1",Value1: "3", Value2: "7" },
{ Phase: "Phase 1",Value1: "5", Value2: "2" },
{ Phase: "Phase 1",Value1: "2", Value2: "1" },
{ Phase: "Phase 2",Value1: "1", Value2: "3" },
{ Phase: "Phase 2",Value1: "4", Value2: "8" },
{ Phase: "Phase 2",Value1: "5", Value2: "1" },
{ Phase: "Phase 2",Value1: "1", Value2: "1" }
]
Hi, i have a this Array of objects and i am expecting the below format. I wants to get result by adding all data for value1, value2 (It can be dynamic or may be more) Grouping by Phase.
I am coding in javascript but, result is not coming proper.
[
{ Phase: "Phase 1",Value1: "15", Value2: "14" },
{ Phase: "Phase 2",Value1: "11", Value2: "13" }
]
I can't find any way to achive this.
function utils(data, field){
var data = [{ Phase: "Phase 1", Value1: "5", Value2: "4" }, { Phase: "Phase 1", Value1: "3", Value2: "7" }, { Phase: "Phase 1", Value1: "5", Value2: "2" }, { Phase: "Phase 1", Value1: "2", Value2: "1" }, { Phase: "Phase 2", Value1: "1", Value2: "3" }, { Phase: "Phase 2", Value1: "4", Value2: "8" }, { Phase: "Phase 2", Value1: "5", Value2: "1" }, { Phase: "Phase 2", Value1: "1", Value2: "1" }],
result = Object.values(data.reduce((r, { Phase, ...o }) => {
if (!r[Phase]) r[Phase] = { Phase };
Object.entries(o).forEach(([k, v]) => r[Phase][k] = (r[Phase][k] || 0) + +v);
return r;
}, {}));
return result
}
utils(data, "Phase")
Here i have written code like this. but, the field should be dynamic here if i change the field Phase to something else is is coming undefined and not coming result incorrect.
I wants to use field what i am sending in function instead of Phase. That has to be dynamic
Please have a look