Невозможно вернуть искомое значение в javascript через forEach

#javascript

#javascript

Вопрос:

Я пытаюсь вернуть искомый элемент через forEach, но, к сожалению, он не возвращает правильное значение, но через цикл for может вернуть правильное значение после поиска.

 function search(arr, searchValue) {
  arr.forEach((_eachItem,i)=> {
    if(_eachItem===searchValue) {
      return i
    }
  })
  
  return -1
  
//   for(let i=0;i<arr.length;i  ) {
//     if(arr[i]===searchValue) {
//       return i
//     }
//   }
//   return -1
}


console.log(search([11,1,2,3,4,9],9)) 

Ответ №1:

forEach возвращает undefined , что вы должны использовать, это includes .

 function search(arr, searchValue) {
  return arr.includes(searchValue);
}


console.log(search([11,1,2,3,4,9],9)) 

Комментарии:

1. что вы имеете в виду, forEach возвращает undefined

2. forEach() выполняет функцию обратного вызова один раз для каждого элемента массива; в отличие map() от or reduce() он всегда возвращает значение undefined и не может быть привязан. Типичным вариантом использования является выполнение побочных эффектов в конце цепочки.

3. да, понял, всегда возвращайте undefined

Ответ №2:

Возврат из forEach обратного вызова не возвращается из внешней функции. Вы можете использовать Array#indexOf .

 function search(arr, searchValue) {
  return arr.indexOf(searchValue);
}

console.log(search([11,1,2,3,4,9],9))