Поиск значения из объектов JS\TS

От бека получаю ответ

[
  {
    fileId: 71240,
    signStatus: 4,
    fileName: 'Заявление_УСД В КЕМЕРОВСКОЙ ОБЛАСТИ - КУЗБАССЕ_0000033-РВ.docx',
    uploadedDate: '2025-02-11T09:01:08.79668',
    uploadedBy: 'Автоматически',
    tag: 'acceptance'
  },
  {
    fileId: 71241,
    signStatus: 4,
    fileName: 'Предложение_УСД В КЕМЕРОВСКОЙ ОБЛАСТИ - КУЗБАССЕ_0000033-РВ.docx',
    uploadedDate: '2025-02-11T09:01:08.133628',
    uploadedBy: 'Автоматически',
    tag: 'acceptance'
  }
]

Мне нужно для fileId где fileName содержит 'Предложение. Простецким способом по второму объекту находит, верно(fileId: 71241).

 const response = await contractsRegistry.json();
        console.log(response[1].fileId);

Но мне нужно переписать чтоб поиск был по fileName содержит 'Предложение. Подскажите как написать?


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

Автор решения: SwaD

const response = [{
  fileId: 71240,
  signStatus: 4,
  fileName: 'Заявление_УСД В КЕМЕРОВСКОЙ ОБЛАСТИ - КУЗБАССЕ_0000033-РВ.docx',
  uploadedDate: '2025-02-11T09:01:08.79668',
  uploadedBy: 'Автоматически',
  tag: 'acceptance'
}, {
  fileId: 71241,
  signStatus: 4,
  fileName: 'Предложение_УСД В КЕМЕРОВСКОЙ ОБЛАСТИ - КУЗБАССЕ_0000033-РВ.docx',
  uploadedDate: '2025-02-11T09:01:08.133628',
  uploadedBy: 'Автоматически',
  tag: 'acceptance'
}];

// Ищем вхождение подстроки через indexOf 
response
  .filter(n => n.fileName.indexOf('Предложение') !== -1)
  .forEach(el => console.log(el.fileId));
  
// Или с помощью метода includes // По совету @ksa
response
  .filter(n => n.fileName.includes('Предложение'))
  .forEach(el => console.log(el.fileId));

Фильтруем массив и ищем все элементы, где ключ fileName содержит "Предложение", далее выводим значения fileId найденных элементов

→ Ссылка
Автор решения: Эрмек Черикчиев
function findByFileName(search) {
  const result = arr.reduce((acc, el) => {
    if (el.fileName.includes(search)) {
      acc.push(el);
    }
    return acc
  }, [])

  return result;
}
→ Ссылка