Как отфильтровать вложенный массив объектов

Всем привет, есть массив объектов представим его как:

const arr = [{
 var: 'value',
 var2: 'value2',
 projects: [{
  name: 'Project 1',
  id: 1,
 }],
 var3: 'value3',
 group: [{
  name: 'value',
  id: 1,
 }],
},
{
 var: 'value',
 var2: 'value2',
 projects: [{
  name: 'Project 2',
  id: 1,
 }],
 var3: 'value3',
 group: [{
  name: 'value',
  id 1,
 }
]

Необходимо отфильтровать его относительно свойству name, во вложенных массивах объектов, например по массиву project я должен получить только Project 1, причем не просто:

projects: [{
  name: 'Project 1',
  id: 1,
 }],

А весь объект:

{
 var: 'value',
 var2: 'value2',
 projects: [{
  name: 'Project 1',
  id: 1,
 }],
 var3: 'value3',
 group: [{
  name: 'value',
  id: 1,
 }],
},

Так же возможно два фильтра ещё по group.

Второй день пытаюсь это сделать, без результата, спасибо.


Ответы (1 шт):

Автор решения: Stepan Kasyanenko

Для поиска можно использовать метод find.

const arr = [{
    var: 'value',
    var2: 'value2',
    projects: [{
      name: 'Project 1',
      id: 1,
    }],
    var3: 'value3',
    group: [{
      name: 'value',
      id: 1,
    }],
  },
  {
    var: 'value',
    var2: 'value2',
    projects: [{
      name: 'Project 2',
      id: 1,
    }],
    var3: 'value3',
    group: [{
      name: 'value',
      id: 1,
    }],
  }
];

const projet1 = arr.find(f => f.projects?.some(s => s.name === 'Project 1'));

console.log(projet1);

→ Ссылка