-1

myArra.js

[
  {
    "id": "61028558b45073399077becd",
    "slno": "A1",
    "checkPoint": "Position of adaptor CAT",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028558b45073399077becd",
    "slno": "A1",
    "checkPoint": "Position of adaptor CAT",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028558b45073399077becd",
    "slno": "A1",
    "checkPoint": "Position of adaptor CAT",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028567b45073399077becf",
    "slno": "A2",
    "checkPoint": "Flush height of Adaptor CAT position",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "NO",
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028572b45073399077bed1",
    "slno": "A3",
    "checkPoint": "Position of CAT bottom side",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "6102857fb45073399077bed3",
    "slno": "A4",
    "checkPoint": "Flush height of  CAT bottom side",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "6102858cb45073399077bed5",
    "slno": "B1",
    "checkPoint": "Position of Front cap pipe outer",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  }
]

Here in the above code, I have an array of objects and it has duplicate elements. For example it has object elements such as 'slno','checkPoint' and 'id' are same. So all these duplicate object should become only one object and also, the element 'va' in every object is an array it has same length in every duplicate object. In these duplicate objects also it should become one array and the null index should be filled if the array has value. so, result should look something like

result

[
  {
    "id": "61028558b45073399077becd",
    "slno": "A1",
    "checkPoint": "Position of adaptor CAT",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      "YES",
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028567b45073399077becf",
    "slno": "A2",
    "checkPoint": "Flush height of Adaptor CAT position",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "NO",
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028572b45073399077bed1",
    "slno": "A3",
    "checkPoint": "Position of CAT bottom side",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "6102857fb45073399077bed3",
    "slno": "A4",
    "checkPoint": "Flush height of  CAT bottom side",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "6102858cb45073399077bed5",
    "slno": "B1",
    "checkPoint": "Position of Front cap pipe outer",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  }
]

So in myArray.js there were 3 duplicate with same id,slno and checkPoint. So in the result it has become only one element. But, the array 'va' was different in every element. i,e on 19th,22nd and 23rd indexes. So it became one array and assigned the respective values for the respective indexes and rest values except 19,22nd and 23rd indexes became null.

rakshit
  • 49
  • 4
  • Does this answer your question? [Remove duplicate values from an array of objects in javascript](https://stackoverflow.com/questions/45439961/remove-duplicate-values-from-an-array-of-objects-in-javascript) – ziishaned Aug 24 '21 at 11:20
  • Unfortunately, No – rakshit Aug 24 '21 at 11:28

1 Answers1

0

This should do it.

let a = [
  {
    "id": "61028558b45073399077becd",
    "slno": "A1",
    "checkPoint": "Position of adaptor CAT",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028558b45073399077becd",
    "slno": "A1",
    "checkPoint": "Position of adaptor CAT",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028558b45073399077becd",
    "slno": "A1",
    "checkPoint": "Position of adaptor CAT",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "YES",
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028567b45073399077becf",
    "slno": "A2",
    "checkPoint": "Flush height of Adaptor CAT position",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      "NO",
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "61028572b45073399077bed1",
    "slno": "A3",
    "checkPoint": "Position of CAT bottom side",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "6102857fb45073399077bed3",
    "slno": "A4",
    "checkPoint": "Flush height of  CAT bottom side",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  },
  {
    "id": "6102858cb45073399077bed5",
    "slno": "B1",
    "checkPoint": "Position of Front cap pipe outer",
    "va": [
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ]
  }
];

let filtered = {};

a.forEach(v => {
  if (filtered[v.id]) {
    filtered[v.id].va = filtered[v.id].va.map((subvalue, position) => {
      return (subvalue || v.va[position]);
    });
  } else {
    filtered[v.id] = v;
  }
});

console.log(Object.entries(filtered));
Chris Lear
  • 6,592
  • 1
  • 18
  • 26
  • in the resultant array, only at the index 23, value is there. But as I've already explained in the question, needed value in 22nd and 19th index also – rakshit Aug 24 '21 at 11:26
  • Ah, sorry. I see what you're looking for now - I've edited the answer so that it merges the `va` properties while reducing so that id is unique – Chris Lear Aug 25 '21 at 08:08