I have an array of object and have to convert in level 1 json (flatten) it. The keys code and takenBY are dynamic
key1 = "code",
key2 = "takenBy"
const dataObject = [
{
"code": "ABCD",
"subRows": [
{
"takenBy": "Ram",
"workedAccounts": 2,
"contactableAccounts": 1,
},
{
"takenBy": "krish",
"workedAccounts": 2,
"contactableAccounts": 2,
}
],
"workedAccounts": 4,
"contactableAccounts": 3,
},
{
"code": "XYZ",
"subRows": [
{
"takenBy": "Jack",
"workedAccounts": 5,
"contactableAccounts": 0,
},
{
"takenBy": "krish",
"workedAccounts": 4,
"contactableAccounts": 4,
}
],
"workedAccounts": 9,
"contactableAccounts": 4,
},
]
const headerObject = [
{ label: 'Code', field_key: 'code' },
{ label: 'Worked Accounts', field_key: 'workedAccounts' },
{ label: 'Contactable Accounts', field_key: 'contactableAccounts' },
{ label: 'Taken By', field_key: 'takenBy' },
];
const result = [
{
"Code": "ABCD",
"Taken By": "",
"Worked Accounts": 4,
"Contactable Accounts": 3,
},
{
"Taken By": "Ram",
"Worked Accounts": 2,
"Contactable Accounts": 1,
},
{
"Taken By": "krish",
"Worked Accounts": 2,
"Contactable Accounts": 2,
},
{
"Code": "XYZ",
"Taken By": "",
"Worked Accounts": 9,
"Contactable Accounts": 4,
},
{
"Taken By": "Jack",
"Worked Accounts": 5,
"Contactable Accounts": 0,
},
{
"Taken By": "krish",
"Worked Accounts": 4,
"Contactable Accounts": 4,
}
];
const result = dataObject .reduce((acc, { subRows, ...rest }) => acc.concat(subRows.map(({ ...props }) => ({ ...props, ...rest}), [])), []);