@timofeus91
Junior Frontend Developer

Как правильно перебрать массив и добавить результат в переменную состояния?

Всем доброго времени суток! Возникла проблема с добавлением элемента массива в хук состояния. Перебираю массив через forEach. Если вписываю конкретное слово из массива, то все срабатывает и добавляется как должно. Если же прописываю просто одну букву ( буква а как пример) , то добавляется только один элемент массива, хотя через console.log вижу что есть 15 совпадений( а должно быть 17. Во всех элементах массива есть данная буква). Не могу понять где я ошибся. Проблема в конструкции if или где-то еще? Заранее благодарю за помощь!

Это код функции , которая используется. В функции handleStartSearch(data) data это просто строка из инпута. dataJson.result это массив объектов.

const [cards, setCards] = React.useState([]);

  function handleStartSearch(data) {
    
    dataJson.result.forEach(item => {

      if ( data.length > 0 && (item.title.includes(data) || item.author_lastName.includes(data)
           || item.author_firstName.includes(data))) {
        setCards([...cards, item])
        console.log('Есть совпадение!');
      }
    })
}
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
function handleStartSearch(data) {
    setCards(!data ? dataJson.result : dataJson.result.filter(item =>
            (item.title.includes(data) || item.author_lastName.includes(data)
           || item.author_firstName.includes(data)))
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы