JS array.map返回未定义

问题描述

我具有以下功能

function findNeedle(array) {
    array.forEach(element => {
        if(element === 'needle') {
            console.log('needle') // needle
            return 'needle'
        }
    });
}
const needle = findNeedle(['hay','junk','hay','moreJunk','needle','randomJunk'])
console.log(needle)

我不太了解为什么我的函数返回未定义。我尝试使用forEach,但仍然遇到相同的问题。奇怪的是,执行返回“ needle”之前的console.log语句

解决方法

您必须执行此操作 因为它将针返回到forEach函数而不是findNeedle函数

祝你有美好的一天,如果有任何疑问发表评论

function findNeedle(array) {
var answer;
    array.forEach(element => {
        if(element === 'needle') {
            console.log('needle') // needle
            answer= 'needle'
        }
    });
return answer
}
const needle = findNeedle(['hay','junk','hay','moreJunk','needle','randomJunk'])
console.log(needle) //undefined
,

必须在函数内返回数组,否则将导致undefined。像这样:

function findNeedle(array) {
    return array.forEach(element => {
        // ....
}

但是此代码中还有其他错误。

我不确定您要达到的目标,这可以帮助您吗?

function findNeedle(arr) {
    return arr.map((element,index) => {
        if(element === 'needle') {
            return index;
        }
    });
}
let needle = findNeedle(['hay','randomJunk']);
console.log(needle)