I am currently working on a react project together with antd. I receive data and calculations from customers, which I have to fill inside a table. For this, I map the data inside an object array in this form:
const personTableData = filteredCalc.map((calc, index) => ({
key: index,
personName: `${calc.Person.Firstname} ${calc.Person.Lastname}`,
personBirthday: <FormattedDate value={calc.Person.Birthday} />,
personMaritalStatus: checkMaritalStatus(calc.Person.MaritalStatus),
jobBeforeAccident: calc.BeforeAccJob || noData,
leadingDiagnosis:...
))
: noData,
}));
I have multiple calculations, where the customer and his main information stays the same. I want to remove duplicates by Firstname Lastname and the corresponding id.
For example, I receive something like this:
[{Firstname: 'Billy', Lastname:'Johnson', '_id: 2, Age: 15, ...},
{Firstname: 'Billy', Lastname:'Johnson', '_id: 5, Age: 24, ...},
{Firstname: 'Billy', Lastname:'Johnson', '_id: 5, Age: 24, ...},
{Firstname: 'Ashley', Lastname:'Johnson', '_id: 9, Age: 15, ...}]
I want to get something like this (remove if same NAME and ID):
[{Firstname: 'Billy', Lastname:'Johnson', '_id: 2, Age: 15, ...},
{Firstname: 'Billy', Lastname:'Johnson', '_id: 5, Age: 24, ...},
{Firstname: 'Ashley', Lastname:'Johnson', '_id: 9, Age: 15, ...}]
I already have a reducer function, that filters out what I need. What can I extend here, to remove duplicates with Firstname Lastname & ID ?
const filteredCalc = allPersonsDetails.calculations.reduce(
(reducer, calc) => {
// check if Person has any Icds element has IsLeading === true
const filtered = calc.Person.Icds.filter((icd) => icd.IsLeading === true);
// use current calc and replace with filtered Icds
const newData = { ...calc, Person: { ...calc.Person, Icds: filtered } };
reducer.push(newData);
// always return the reducer array
return reducer;
},
[]
);
This is the object array, I use the reduce function on:
[
{
"_id": "62ea6a81b7f32a7497ebdb70",
"BeforeAccJob": "",
"Person": {
"_id": "T1145350",
"Firstname": "Udo",
"Lastname": "Kirschenbaum",
"Birthday": "1950-04-16T22:00:00.000Z",
"MaritalStatus": "NotSet",
"Icds": [
{
"_id": 912386,
"Mk": 2,
"Code": "S92.3",
"ActineoText": "Fraktur der Mittelfußknochen",
"Text": "Fraktur der Mittelfußknochen",
"Status": "assured",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912387,
"Mk": 2,
"Code": "S52.50",
"ActineoText": "Distale Fraktur des Radius",
"Text": "Distale Fraktur des Radius: Nicht näher bezeichnet",
"Status": "assured",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912388,
"Mk": 3,
"Code": "S22.2",
"ActineoText": "Fraktur des Sternums",
"Text": "Fraktur des Sternums",
"Status": "assured",
"IsLeading": true,
"__typename": "ProcessICD"
},
{
"_id": 912389,
"Mk": 3,
"Code": "S22.44",
"ActineoText": "Rippenserienfraktur (4 oder mehr)",
"Text": "Rippenserienfraktur: Mit Beteiligung von vier und mehr Rippen",
"Status": "assured",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912390,
"Mk": 2,
"Code": "S27.31",
"ActineoText": "Prellung und Hämatom der Lunge",
"Text": "Prellung und Hämatom der Lunge",
"Status": "assured",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912391,
"Mk": 2,
"Code": "S39.9",
"ActineoText": "Verletzung abdominal, lumbosakral und/oder Becken",
"Text": "Nicht näher bezeichnete Verletzung des Abdomens, der Lumbosakralgegend und des Beckens",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912392,
"Mk": 1,
"Code": "R58",
"ActineoText": "Blutung",
"Text": "Blutung, anderenorts nicht klassifiziert",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912393,
"Mk": 1,
"Code": "T14.1",
"ActineoText": "Offene Wunde an einer nicht näher bezeichneten Körperregion",
"Text": "Offene Wunde an einer nicht näher bezeichneten Körperregion",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912394,
"Mk": 1,
"Code": "R23.8",
"ActineoText": "Sonstige und nicht näher bezeichnete Hautveränderungen",
"Text": "Sonstige und nicht näher bezeichnete Hautveränderungen",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912395,
"Mk": 3,
"Code": "S37.00",
"ActineoText": "Verletzung der Niere, nicht näher bezeichnet",
"Text": "Verletzung der Niere, nicht näher bezeichnet",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912396,
"Mk": 3,
"Code": "S62.3",
"ActineoText": "Fraktur im Bereich der Hand",
"Text": "Fraktur sonstiger und nicht näher bezeichneter Teile des Handgelenkes und der Hand",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 920670,
"Mk": 3,
"Code": "S37.03",
"ActineoText": "Komplette Ruptur des Nierenparenchyms",
"Text": "Komplette Ruptur des Nierenparenchyms",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 920671,
"Mk": 2,
"Code": "S52.51",
"ActineoText": "Distale Fraktur des Radius: Extensionsfraktur",
"Text": "Distale Fraktur des Radius: Extensionsfraktur",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 920663,
"Mk": 1,
"Code": "S51.9",
"ActineoText": "Offene Wunde des Unterarmes, Teil nicht näher bezeichnet",
"Text": "Offene Wunde des Unterarmes, Teil nicht näher bezeichnet",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 920665,
"Mk": 1,
"Code": "J90",
"ActineoText": "Pleuraerguss",
"Text": "Pleuraerguss, anderenorts nicht klassifiziert",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
}
],
"__typename": "Person"
},
"__typename": "CalculationEntity"
},
{
"_id": "61b23b256cc8961a3445dc63",
"BeforeAccJob": "",
"Person": {
"_id": "T1056702",
"Firstname": "Olaf",
"Lastname": "Kirschenbaum",
"Birthday": "1979-12-13T23:00:00.000Z",
"MaritalStatus": "NotSet",
"Icds": [
{
"_id": 922613,
"Mk": 3,
"Code": "S92.0",
"ActineoText": "Fraktur des Kalkaneus",
"Text": "Fraktur des Kalkaneus",
"Status": "unknown",
"IsLeading": true,
"__typename": "ProcessICD"
},
{
"_id": 922614,
"Mk": 2,
"Code": "S92.3",
"ActineoText": "Fraktur der Mittelfußknochen",
"Text": "Fraktur der Mittelfußknochen",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 922616,
"Mk": 3,
"Code": "S22.2",
"ActineoText": "Fraktur des Sternums",
"Text": "Fraktur des Sternums",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
}
],
"__typename": "Person"
},
"__typename": "CalculationEntity"
},
{
"_id": "630492a8f71829079d52d22b",
"BeforeAccJob": "",
"Person": {
"_id": "C34177",
"Firstname": "",
"Lastname": "",
"Birthday": "2022-08-23T06:42:02.316Z",
"MaritalStatus": "NotSet",
"Icds": [],
"__typename": "Person"
},
"__typename": "CalculationEntity"
},
{
"_id": "630492b8f71829079d52d2af",
"BeforeAccJob": "",
"Person": {
"_id": "C52679",
"Firstname": "",
"Lastname": "",
"Birthday": "2022-08-23T06:42:02.316Z",
"MaritalStatus": "NotSet",
"Icds": [],
"__typename": "Person"
},
"__typename": "CalculationEntity"
},
{
"_id": "61b23b346cc8961a3445dca5",
"BeforeAccJob": "",
"Person": {
"_id": "T1145350",
"Firstname": "Udo",
"Lastname": "Kirschenbaum",
"Birthday": "1950-04-16T22:00:00.000Z",
"MaritalStatus": "NotSet",
"Icds": [
{
"_id": 912386,
"Mk": 2,
"Code": "S92.3",
"ActineoText": "Fraktur der Mittelfußknochen",
"Text": "Fraktur der Mittelfußknochen",
"Status": "assured",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912387,
"Mk": 2,
"Code": "S52.50",
"ActineoText": "Distale Fraktur des Radius",
"Text": "Distale Fraktur des Radius: Nicht näher bezeichnet",
"Status": "assured",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912388,
"Mk": 3,
"Code": "S22.2",
"ActineoText": "Fraktur des Sternums",
"Text": "Fraktur des Sternums",
"Status": "assured",
"IsLeading": true,
"__typename": "ProcessICD"
},
{
"_id": 912389,
"Mk": 3,
"Code": "S22.44",
"ActineoText": "Rippenserienfraktur (4 oder mehr)",
"Text": "Rippenserienfraktur: Mit Beteiligung von vier und mehr Rippen",
"Status": "assured",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912390,
"Mk": 2,
"Code": "S27.31",
"ActineoText": "Prellung und Hämatom der Lunge",
"Text": "Prellung und Hämatom der Lunge",
"Status": "assured",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912391,
"Mk": 2,
"Code": "S39.9",
"ActineoText": "Verletzung abdominal, lumbosakral und/oder Becken",
"Text": "Nicht näher bezeichnete Verletzung des Abdomens, der Lumbosakralgegend und des Beckens",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912392,
"Mk": 1,
"Code": "R58",
"ActineoText": "Blutung",
"Text": "Blutung, anderenorts nicht klassifiziert",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912393,
"Mk": 1,
"Code": "T14.1",
"ActineoText": "Offene Wunde an einer nicht näher bezeichneten Körperregion",
"Text": "Offene Wunde an einer nicht näher bezeichneten Körperregion",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912394,
"Mk": 1,
"Code": "R23.8",
"ActineoText": "Sonstige und nicht näher bezeichnete Hautveränderungen",
"Text": "Sonstige und nicht näher bezeichnete Hautveränderungen",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912395,
"Mk": 3,
"Code": "S37.00",
"ActineoText": "Verletzung der Niere, nicht näher bezeichnet",
"Text": "Verletzung der Niere, nicht näher bezeichnet",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 912396,
"Mk": 3,
"Code": "S62.3",
"ActineoText": "Fraktur im Bereich der Hand",
"Text": "Fraktur sonstiger und nicht näher bezeichneter Teile des Handgelenkes und der Hand",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 920670,
"Mk": 3,
"Code": "S37.03",
"ActineoText": "Komplette Ruptur des Nierenparenchyms",
"Text": "Komplette Ruptur des Nierenparenchyms",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 920671,
"Mk": 2,
"Code": "S52.51",
"ActineoText": "Distale Fraktur des Radius: Extensionsfraktur",
"Text": "Distale Fraktur des Radius: Extensionsfraktur",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 920663,
"Mk": 1,
"Code": "S51.9",
"ActineoText": "Offene Wunde des Unterarmes, Teil nicht näher bezeichnet",
"Text": "Offene Wunde des Unterarmes, Teil nicht näher bezeichnet",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
},
{
"_id": 920665,
"Mk": 1,
"Code": "J90",
"ActineoText": "Pleuraerguss",
"Text": "Pleuraerguss, anderenorts nicht klassifiziert",
"Status": "unknown",
"IsLeading": false,
"__typename": "ProcessICD"
}
],
"__typename": "Person"
},
"__typename": "CalculationEntity"
}
]
As you can see, I get the same persons multiple times inside my table:
CodePudding user response:
I think _id field is unique, so you don't need to use firstname lastname in condition. You can use find
inside reducer to look if accumulator has the entity with the same _id
. If not - add it to accumulator.
const data = [
{
_id: '62ea6a81b7f32a7497ebdb70',
BeforeAccJob: '',
Person: {
_id: 'T1145350',
Firstname: 'Udo',
Lastname: 'Kirschenbaum',
Birthday: '1950-04-16T22:00:00.000Z',
MaritalStatus: 'NotSet',
Icds: [
{
_id: 912386,
Mk: 2,
Code: 'S92.3',
ActineoText: 'Fraktur der Mittelfußknochen',
Text: 'Fraktur der Mittelfußknochen',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912387,
Mk: 2,
Code: 'S52.50',
ActineoText: 'Distale Fraktur des Radius',
Text: 'Distale Fraktur des Radius: Nicht näher bezeichnet',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912388,
Mk: 3,
Code: 'S22.2',
ActineoText: 'Fraktur des Sternums',
Text: 'Fraktur des Sternums',
Status: 'assured',
IsLeading: true,
__typename: 'ProcessICD',
},
{
_id: 912389,
Mk: 3,
Code: 'S22.44',
ActineoText: 'Rippenserienfraktur (4 oder mehr)',
Text: 'Rippenserienfraktur: Mit Beteiligung von vier und mehr Rippen',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912390,
Mk: 2,
Code: 'S27.31',
ActineoText: 'Prellung und Hämatom der Lunge',
Text: 'Prellung und Hämatom der Lunge',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912391,
Mk: 2,
Code: 'S39.9',
ActineoText: 'Verletzung abdominal, lumbosakral und/oder Becken',
Text: 'Nicht näher bezeichnete Verletzung des Abdomens, der Lumbosakralgegend und des Beckens',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912392,
Mk: 1,
Code: 'R58',
ActineoText: 'Blutung',
Text: 'Blutung, anderenorts nicht klassifiziert',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912393,
Mk: 1,
Code: 'T14.1',
ActineoText:
'Offene Wunde an einer nicht näher bezeichneten Körperregion',
Text: 'Offene Wunde an einer nicht näher bezeichneten Körperregion',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912394,
Mk: 1,
Code: 'R23.8',
ActineoText: 'Sonstige und nicht näher bezeichnete Hautveränderungen',
Text: 'Sonstige und nicht näher bezeichnete Hautveränderungen',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912395,
Mk: 3,
Code: 'S37.00',
ActineoText: 'Verletzung der Niere, nicht näher bezeichnet',
Text: 'Verletzung der Niere, nicht näher bezeichnet',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912396,
Mk: 3,
Code: 'S62.3',
ActineoText: 'Fraktur im Bereich der Hand',
Text: 'Fraktur sonstiger und nicht näher bezeichneter Teile des Handgelenkes und der Hand',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920670,
Mk: 3,
Code: 'S37.03',
ActineoText: 'Komplette Ruptur des Nierenparenchyms',
Text: 'Komplette Ruptur des Nierenparenchyms',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920671,
Mk: 2,
Code: 'S52.51',
ActineoText: 'Distale Fraktur des Radius: Extensionsfraktur',
Text: 'Distale Fraktur des Radius: Extensionsfraktur',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920663,
Mk: 1,
Code: 'S51.9',
ActineoText:
'Offene Wunde des Unterarmes, Teil nicht näher bezeichnet',
Text: 'Offene Wunde des Unterarmes, Teil nicht näher bezeichnet',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920665,
Mk: 1,
Code: 'J90',
ActineoText: 'Pleuraerguss',
Text: 'Pleuraerguss, anderenorts nicht klassifiziert',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
],
__typename: 'Person',
},
__typename: 'CalculationEntity',
},
{
_id: '61b23b256cc8961a3445dc63',
BeforeAccJob: '',
Person: {
_id: 'T1056702',
Firstname: 'Olaf',
Lastname: 'Kirschenbaum',
Birthday: '1979-12-13T23:00:00.000Z',
MaritalStatus: 'NotSet',
Icds: [
{
_id: 922613,
Mk: 3,
Code: 'S92.0',
ActineoText: 'Fraktur des Kalkaneus',
Text: 'Fraktur des Kalkaneus',
Status: 'unknown',
IsLeading: true,
__typename: 'ProcessICD',
},
{
_id: 922614,
Mk: 2,
Code: 'S92.3',
ActineoText: 'Fraktur der Mittelfußknochen',
Text: 'Fraktur der Mittelfußknochen',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 922616,
Mk: 3,
Code: 'S22.2',
ActineoText: 'Fraktur des Sternums',
Text: 'Fraktur des Sternums',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
],
__typename: 'Person',
},
__typename: 'CalculationEntity',
},
{
_id: '630492a8f71829079d52d22b',
BeforeAccJob: '',
Person: {
_id: 'C34177',
Firstname: '',
Lastname: '',
Birthday: '2022-08-23T06:42:02.316Z',
MaritalStatus: 'NotSet',
Icds: [],
__typename: 'Person',
},
__typename: 'CalculationEntity',
},
{
_id: '630492b8f71829079d52d2af',
BeforeAccJob: '',
Person: {
_id: 'C52679',
Firstname: '',
Lastname: '',
Birthday: '2022-08-23T06:42:02.316Z',
MaritalStatus: 'NotSet',
Icds: [],
__typename: 'Person',
},
__typename: 'CalculationEntity',
},
{
_id: '61b23b346cc8961a3445dca5',
BeforeAccJob: '',
Person: {
_id: 'T1145350',
Firstname: 'Udo',
Lastname: 'Kirschenbaum',
Birthday: '1950-04-16T22:00:00.000Z',
MaritalStatus: 'NotSet',
Icds: [
{
_id: 912386,
Mk: 2,
Code: 'S92.3',
ActineoText: 'Fraktur der Mittelfußknochen',
Text: 'Fraktur der Mittelfußknochen',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912387,
Mk: 2,
Code: 'S52.50',
ActineoText: 'Distale Fraktur des Radius',
Text: 'Distale Fraktur des Radius: Nicht näher bezeichnet',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912388,
Mk: 3,
Code: 'S22.2',
ActineoText: 'Fraktur des Sternums',
Text: 'Fraktur des Sternums',
Status: 'assured',
IsLeading: true,
__typename: 'ProcessICD',
},
{
_id: 912389,
Mk: 3,
Code: 'S22.44',
ActineoText: 'Rippenserienfraktur (4 oder mehr)',
Text: 'Rippenserienfraktur: Mit Beteiligung von vier und mehr Rippen',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912390,
Mk: 2,
Code: 'S27.31',
ActineoText: 'Prellung und Hämatom der Lunge',
Text: 'Prellung und Hämatom der Lunge',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912391,
Mk: 2,
Code: 'S39.9',
ActineoText: 'Verletzung abdominal, lumbosakral und/oder Becken',
Text: 'Nicht näher bezeichnete Verletzung des Abdomens, der Lumbosakralgegend und des Beckens',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912392,
Mk: 1,
Code: 'R58',
ActineoText: 'Blutung',
Text: 'Blutung, anderenorts nicht klassifiziert',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912393,
Mk: 1,
Code: 'T14.1',
ActineoText:
'Offene Wunde an einer nicht näher bezeichneten Körperregion',
Text: 'Offene Wunde an einer nicht näher bezeichneten Körperregion',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912394,
Mk: 1,
Code: 'R23.8',
ActineoText: 'Sonstige und nicht näher bezeichnete Hautveränderungen',
Text: 'Sonstige und nicht näher bezeichnete Hautveränderungen',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912395,
Mk: 3,
Code: 'S37.00',
ActineoText: 'Verletzung der Niere, nicht näher bezeichnet',
Text: 'Verletzung der Niere, nicht näher bezeichnet',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912396,
Mk: 3,
Code: 'S62.3',
ActineoText: 'Fraktur im Bereich der Hand',
Text: 'Fraktur sonstiger und nicht näher bezeichneter Teile des Handgelenkes und der Hand',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920670,
Mk: 3,
Code: 'S37.03',
ActineoText: 'Komplette Ruptur des Nierenparenchyms',
Text: 'Komplette Ruptur des Nierenparenchyms',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920671,
Mk: 2,
Code: 'S52.51',
ActineoText: 'Distale Fraktur des Radius: Extensionsfraktur',
Text: 'Distale Fraktur des Radius: Extensionsfraktur',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920663,
Mk: 1,
Code: 'S51.9',
ActineoText:
'Offene Wunde des Unterarmes, Teil nicht näher bezeichnet',
Text: 'Offene Wunde des Unterarmes, Teil nicht näher bezeichnet',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920665,
Mk: 1,
Code: 'J90',
ActineoText: 'Pleuraerguss',
Text: 'Pleuraerguss, anderenorts nicht klassifiziert',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
],
__typename: 'Person',
},
__typename: 'CalculationEntity',
},
{
_id: '5f69f2c6ef296153814ba870',
BeforeAccJob: '',
Person: {
_id: 'T1145350',
Firstname: 'Udo',
Lastname: 'Kirschenbaum',
Birthday: '1950-04-16T22:00:00.000Z',
MaritalStatus: 'NotSet',
Icds: [
{
_id: 912386,
Mk: 2,
Code: 'S92.3',
ActineoText: 'Fraktur der Mittelfußknochen',
Text: 'Fraktur der Mittelfußknochen',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912387,
Mk: 2,
Code: 'S52.50',
ActineoText: 'Distale Fraktur des Radius',
Text: 'Distale Fraktur des Radius: Nicht näher bezeichnet',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912388,
Mk: 3,
Code: 'S22.2',
ActineoText: 'Fraktur des Sternums',
Text: 'Fraktur des Sternums',
Status: 'assured',
IsLeading: true,
__typename: 'ProcessICD',
},
{
_id: 912389,
Mk: 3,
Code: 'S22.44',
ActineoText: 'Rippenserienfraktur (4 oder mehr)',
Text: 'Rippenserienfraktur: Mit Beteiligung von vier und mehr Rippen',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912390,
Mk: 2,
Code: 'S27.31',
ActineoText: 'Prellung und Hämatom der Lunge',
Text: 'Prellung und Hämatom der Lunge',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912391,
Mk: 2,
Code: 'S39.9',
ActineoText: 'Verletzung abdominal, lumbosakral und/oder Becken',
Text: 'Nicht näher bezeichnete Verletzung des Abdomens, der Lumbosakralgegend und des Beckens',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912392,
Mk: 1,
Code: 'R58',
ActineoText: 'Blutung',
Text: 'Blutung, anderenorts nicht klassifiziert',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912393,
Mk: 1,
Code: 'T14.1',
ActineoText:
'Offene Wunde an einer nicht näher bezeichneten Körperregion',
Text: 'Offene Wunde an einer nicht näher bezeichneten Körperregion',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912394,
Mk: 1,
Code: 'R23.8',
ActineoText: 'Sonstige und nicht näher bezeichnete Hautveränderungen',
Text: 'Sonstige und nicht näher bezeichnete Hautveränderungen',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912395,
Mk: 3,
Code: 'S37.00',
ActineoText: 'Verletzung der Niere, nicht näher bezeichnet',
Text: 'Verletzung der Niere, nicht näher bezeichnet',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912396,
Mk: 3,
Code: 'S62.3',
ActineoText: 'Fraktur im Bereich der Hand',
Text: 'Fraktur sonstiger und nicht näher bezeichneter Teile des Handgelenkes und der Hand',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920670,
Mk: 3,
Code: 'S37.03',
ActineoText: 'Komplette Ruptur des Nierenparenchyms',
Text: 'Komplette Ruptur des Nierenparenchyms',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920671,
Mk: 2,
Code: 'S52.51',
ActineoText: 'Distale Fraktur des Radius: Extensionsfraktur',
Text: 'Distale Fraktur des Radius: Extensionsfraktur',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920663,
Mk: 1,
Code: 'S51.9',
ActineoText:
'Offene Wunde des Unterarmes, Teil nicht näher bezeichnet',
Text: 'Offene Wunde des Unterarmes, Teil nicht näher bezeichnet',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920665,
Mk: 1,
Code: 'J90',
ActineoText: 'Pleuraerguss',
Text: 'Pleuraerguss, anderenorts nicht klassifiziert',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
],
__typename: 'Person',
},
__typename: 'CalculationEntity',
},
{
_id: '5f69bf5a933a2414c8f540e7',
BeforeAccJob: '',
Person: {
_id: 'T1145350',
Firstname: 'Udo',
Lastname: 'Kirschenbaum',
Birthday: '1950-04-16T22:00:00.000Z',
MaritalStatus: 'NotSet',
Icds: [
{
_id: 912386,
Mk: 2,
Code: 'S92.3',
ActineoText: 'Fraktur der Mittelfußknochen',
Text: 'Fraktur der Mittelfußknochen',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912387,
Mk: 2,
Code: 'S52.50',
ActineoText: 'Distale Fraktur des Radius',
Text: 'Distale Fraktur des Radius: Nicht näher bezeichnet',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912388,
Mk: 3,
Code: 'S22.2',
ActineoText: 'Fraktur des Sternums',
Text: 'Fraktur des Sternums',
Status: 'assured',
IsLeading: true,
__typename: 'ProcessICD',
},
{
_id: 912389,
Mk: 3,
Code: 'S22.44',
ActineoText: 'Rippenserienfraktur (4 oder mehr)',
Text: 'Rippenserienfraktur: Mit Beteiligung von vier und mehr Rippen',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912390,
Mk: 2,
Code: 'S27.31',
ActineoText: 'Prellung und Hämatom der Lunge',
Text: 'Prellung und Hämatom der Lunge',
Status: 'assured',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912391,
Mk: 2,
Code: 'S39.9',
ActineoText: 'Verletzung abdominal, lumbosakral und/oder Becken',
Text: 'Nicht näher bezeichnete Verletzung des Abdomens, der Lumbosakralgegend und des Beckens',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912392,
Mk: 1,
Code: 'R58',
ActineoText: 'Blutung',
Text: 'Blutung, anderenorts nicht klassifiziert',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912393,
Mk: 1,
Code: 'T14.1',
ActineoText:
'Offene Wunde an einer nicht näher bezeichneten Körperregion',
Text: 'Offene Wunde an einer nicht näher bezeichneten Körperregion',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912394,
Mk: 1,
Code: 'R23.8',
ActineoText: 'Sonstige und nicht näher bezeichnete Hautveränderungen',
Text: 'Sonstige und nicht näher bezeichnete Hautveränderungen',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912395,
Mk: 3,
Code: 'S37.00',
ActineoText: 'Verletzung der Niere, nicht näher bezeichnet',
Text: 'Verletzung der Niere, nicht näher bezeichnet',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 912396,
Mk: 3,
Code: 'S62.3',
ActineoText: 'Fraktur im Bereich der Hand',
Text: 'Fraktur sonstiger und nicht näher bezeichneter Teile des Handgelenkes und der Hand',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920670,
Mk: 3,
Code: 'S37.03',
ActineoText: 'Komplette Ruptur des Nierenparenchyms',
Text: 'Komplette Ruptur des Nierenparenchyms',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920671,
Mk: 2,
Code: 'S52.51',
ActineoText: 'Distale Fraktur des Radius: Extensionsfraktur',
Text: 'Distale Fraktur des Radius: Extensionsfraktur',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920663,
Mk: 1,
Code: 'S51.9',
ActineoText:
'Offene Wunde des Unterarmes, Teil nicht näher bezeichnet',
Text: 'Offene Wunde des Unterarmes, Teil nicht näher bezeichnet',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
{
_id: 920665,
Mk: 1,
Code: 'J90',
ActineoText: 'Pleuraerguss',
Text: 'Pleuraerguss, anderenorts nicht klassifiziert',
Status: 'unknown',
IsLeading: false,
__typename: 'ProcessICD',
},
],
__typename: 'Person',
},
__typename: 'CalculationEntity',
},
];
const filteredCalc = data.reduce((reducer, calc) => {
if (reducer.find(reducerItem => reducerItem.Person._id === calc.Person._id)) {
return reducer;
}
// check if Person has any Icds element has IsLeading === true
const filtered = calc.Person.Icds.filter((icd) => icd.IsLeading === true);
// use current calc and replace with filtered Icds
const newData = { ...calc, Person: { ...calc.Person, Icds: filtered } };
reducer.push(newData);
// always return the reducer array
return reducer;
}, []);
console.log(data);
console.log(filteredCalc);
CodePudding user response:
Simplest solution I can think of is instead of using an array and reducing, use a dictionary. This will automatically remove all duplicates (technically overwrite them) and leave you with a single row per customer.
const dict = {};
const filteredCalc = allPersonsDetails.calculations.forEach((calc) => {
// check if Person has any Icds element has IsLeading === true
const filtered = calc.Person.Icds.filter((icd) => icd.IsLeading);
// use current calc and replace with filtered Icds
const newData = { ...calc, Person: { ...calc.Person, Icds: filtered } };
// store new data with key to preventduplicates
dict[`${calc.Person._id}${calc.Person.Firstname}${calc.Person.Lastname}`] =
newData;
});
// Your values are stored in the Object's values.
Object.values(dict);