Задать вопрос
@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('Есть совпадение!');
      }
    })
}
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 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)))
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽