I have got an array of object: And would like to map it to another array witch structure should look like this:
const desireOutput = [
{ seq: 0, level: 1, code: '20', value: 'lorem', connectedByCode: [] },
{ seq: 2, level: 1, code: '30A', value: 'lorem', connectedByCode: [
{ seq: 3, level: 2, code: '30A', value: 'lorem' },
{ seq: 4, level: 2, code: '30A', value: 'lorem' },
{ seq: 5, level: 2, code: '30A', value: 'lorem' }] },
{ seq: 8, level: 1, code: '40', value: 'lorem', connectedByCode: [] },
{ seq: 13, level: 1, code: '50', value: 'lorem', connectedByCode: [] },
{ seq: 15, level: 1, code: '60', value: 'lorem', connectedByCode: [] },
];
I was able to manage it by this code:
const array1 = [{
seq: 0,
level: 1,
code: '20',
value: 'lorem'
},
{
seq: 2,
level: 1,
code: '30A',
value: 'lorem'
},
{
seq: 3,
level: 2,
code: '30A',
value: 'lorem'
},
{
seq: 4,
level: 2,
code: '30A',
value: 'lorem'
},
{
seq: 5,
level: 2,
code: '30A',
value: 'lorem'
},
{
seq: 8,
level: 1,
code: '40',
value: 'lorem'
},
{
seq: 13,
level: 1,
code: '50',
value: 'lorem'
},
{
seq: 15,
level: 1,
code: '60',
value: 'lorem'
},
];
const newTable = array1.filter(i => i.level === 1);
const level2 = array1.filter(i => i.level === 2);
level2.forEach(item => {
const index = newTable.findIndex(i => i.code === item.code);
newTable[index].connectedByCode = level2.filter(i => i.code === item.code);
});
I don't like that code so much to be honest. Is there any better way to do this?