#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()
от orreduce()
он всегда возвращает значение 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))