I have a bunch array of objects with participants and messages, I want to filter the object with the below array of two participants, can anyone help with this
this is the example participnats of array :
["61badffe4ccf060b329441e0","61bc33a84ccf060b32944354"]
bunch of sample messages and participants :
{ "messages": [], "participants": [ "61badffe4ccf060b329441e0", "61bae01b4ccf060b329441ef" ], "_id": "61bae0394ccf060b329441fb", }, { "messages": [], "participants": [ "61bae1014ccf060b3294420e", "61bae01b4ccf060b329441ef" ], "_id": "61bb230c4ccf060b3294421c" }, { "messages": [], "participants": [ "61badffe4ccf060b329441e0", "61bc33a84ccf060b32944354" ], "_id": "61d476dff651471663a72971", }, { "messages": [], "participants": [ "61badffe4ccf060b329441e0", "61e54b82eab592e7fef65656" ], "_id": "61e54ba3eab592e7fef6567a", ] **expected below object after filter participants:** ```{ "messages": [], "participants": [ "61badffe4ccf060b329441e0", "61bc33a84ccf060b32944354" ], "_id": "61d476dff651471663a72971", },
Advertisement
Answer
You might wanna use Array.filter()
and also in your case you should check every element from that array which should match your criteria.
const input = [{ "messages": [], "participants": [ "61badffe4ccf060b329441e0", "61bae01b4ccf060b329441ef" ], "_id": "61bae0394ccf060b329441fb", }, { "messages": [], "participants": [ "61bae1014ccf060b3294420e", "61bae01b4ccf060b329441ef" ], "_id": "61bb230c4ccf060b3294421c" }, { "messages": [], "participants": [ "61badffe4ccf060b329441e0", "61bc33a84ccf060b32944354" ], "_id": "61d476dff651471663a72971", }, { "messages": [], "participants": [ "61badffe4ccf060b329441e0", "61e54b82eab592e7fef65656" ], "_id": "61e54ba3eab592e7fef6567a", } ]; const filterByParticipants = ["61badffe4ccf060b329441e0","61bc33a84ccf060b32944354"]; const output = input.filter(el => el.participants.every(el => filterByParticipants.includes(el))); console.log(output);