1

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: table

1

2 Answers 2

1

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);

Sign up to request clarification or add additional context in comments.

5 Comments

How would I include this inside my reducer function ? I've added your if statement but I still get the same results.
@LaFllamme I have updated my post snippet with yours playground, check it out. I just added if statement in reducer function if (reducer.find(reducerItem => reducerItem.Person._id === calc.Person._id)) { return reducer; }
Did you save it? Not seeing any changes in playground
const filteredCalc = allPersonsDetails.calculations.reduce( (reducer, calc) => { if ( reducer.find( (reducerItem) => reducerItem.Person._id === calc.Person._id ) ) { do my code } }, [] );
I didn't save your playground, just copied here, in the post. Check code snippet. UPDATE: if reducer.find is true, you should return reducer without changes.
1

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);

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.