Looking at the Array Object provided, I need to filter the data and group it by a specific key. Here is the Array Object:
var data = [{
'value': [{
'id': '1',
'list': [
{ 'name': 'test', 'mapp_id': 1 },
{ 'name': 'test1', 'mapp_id': 1 },
{ 'name': 'test2', 'mapp_id': 1 },
{ 'name': 'test3', 'mapp_id': 2 }
]
}, {
'id': '2',
'list': [
{ 'name': 'test4', 'mapp_id': 2 },
{ 'name': 'test5', 'mapp_id': 2 },
{ 'name': 'test6', 'mapp_id': 2 },
{ 'name': 'test7', 'mapp_id': 1 }
]
}
]
},{
'value': [{
'id': '3',
'list': [
{ 'name': 'test8', 'mapp_id': 3 },
{ 'name': 'test9', 'mapp_id': 3 },
{ 'name': 'test10', 'mapp_id': 1 },
{ 'name': 'test11', 'mapp_id': 1 }
]
}, {
'id': '4',
'list': [
{ 'name': 'test12', 'mapp_id': 1 },
{ 'name': 'test13', 'mapp_id': 1 },
{ 'name': 'test14', 'mapp_id': 2 },
{ 'name': 'test14', 'mapp_id': 2 }
]
}
]
}]
I have attempted to manipulate the data, but have not achieved full success. Here's the desired data format along with the code I have tried:
var output = {
'1': [
{ 'name': 'test', 'mapp_id': 1 ,'id': '1'},
{ 'name': 'test1', 'mapp_id': 1 ,'id': '1'},
{ 'name': 'test2', 'mapp_id': 1 ,'id': '1'},
{ 'name': 'test7', 'mapp_id': 1 ,'id': '2'},
{ 'name': 'test10', 'mapp_id': 1, 'id': '3' },
{ 'name': 'test11', 'mapp_id': 1, 'id': '3' },
{ 'name': 'test12', 'mapp_id': 1,'id': '4' },
{ 'name': 'test13', 'mapp_id': 1 ,'id': '4'}
],
'2': [
{ 'name': 'test3', 'mapp_id': 2 ,'id': '1'},
{ 'name': 'test4', 'mapp_id': 2,'id': '2' },
{ 'name': 'test5', 'mapp_id': 2 ,'id': '2'},
{ 'name': 'test6', 'mapp_id': 2,'id': '2' },
{ 'name': 'test14', 'mapp_id': 2 ,'id': '4'},
{ 'name': 'test14', 'mapp_id': 2 ,'id': '4'}
],
'3':[
{ 'name': 'test8', 'mapp_id': 3 ,'id': '4'},
{ 'name': 'test9', 'mapp_id': 3 ,'id': '4'}
]
};
For further information, the lodash library documentation can be found here.
I have also tried some additional code but haven't achieved the desired outcome. Here's the code snippet:
var result= _.flatMap(data, item =>
_(item.value)
.flatMap('list')
.value()
);
result=_.groupBy(result, function(b) { return b.mapp_id})
Currently, my code output is as follows:
output = {
'1': [
{ 'name': 'test', 'mapp_id': 1 },
{ 'name': 'test1', 'mapp_id': 1 },
{ 'name': 'test2', 'mapp_id': 1 },
{ 'name': 'test7', 'mapp_id': 1 },
{ 'name': 'test10', 'mapp_id': 1 },
{ 'name': 'test11', 'mapp_id': 1 },
{ 'name': 'test12', 'mapp_id': 1 },
{ 'name': 'test13', 'mapp_id': 1 }
],
'2': [
{ 'name': 'test3', 'mapp_id': 2 },
{ 'name': 'test4', 'mapp_id': 2 },
{ 'name': 'test5', 'mapp_id': 2 },
{ 'name': 'test6', 'mapp_id': 2 },
{ 'name': 'test14', 'mapp_id': 2 },
{ 'name': 'test14', 'mapp_id': 2 }
],
'3':[
{ 'name': 'test8', 'mapp_id': 3 },
{ 'name': 'test9', 'mapp_id': 3 }
]
};
If anyone can guide me on how to achieve the desired result, I would greatly appreciate it.