当前位置: 首页 > 面试题库 >

使用forEach的函数即使使用return语句也返回未定义的

董洲
2023-03-14
问题内容

我只是在创建一个用于检查对象数组中某个值的函数,但是由于某种原因,它一直在返回undefined。这是为什么?

var data = [{
    "Key": "1111-1111-1111",
        "Email": "test@test.com"
}, {
    "Key": "2222-2222-2222",
        "Email": "test@boo.com"
}];


function getByKey(key) {    
    data.forEach(function (i, val) {
        if (data[val].Key === key) {
            return data[val].Key;
        } else {
            return "Couldn't find";
        }
    });
}

var asd = getByKey('1111-1111-1111');
console.log(asd);

问题答案:

在函数中,您是从传递给的函数返回的forEach,而不是从返回的getByKey

您可以这样修改它:

function getByKey(key) {    
    var found = null;
    data.forEach(function (val) {
        if (val.Key === key) {
            found = val;
        }
    });
    return found;
}

但这会迭代所有元素,即使立即找到该项目也是如此。这就是为什么最好使用一个简单的for循环:

function getByKey(key) {    
    for (var i=0; i<data.length; i++) {
         if (data[i].Key === key) {
            return data[i];
        }
    }
}

请注意,我还修改了您的代码以返回值,而不是键。我想这就是意图。您可能还对另一个迭代函数感到困惑:传递给forEach的回调的第一个参数是数组的元素。



 类似资料:
  • 问题内容: 这是我的代码。出于某种原因,如果我提交表单时未放置密码,则仍会创建数据库条目。整个代码中散布着一些注释,但是代码相当简单。有任何想法吗? 问题答案: 如果声明了变量,则仍然设置空字符串和/或空字符串。尝试这个:

  • 我在一个云平台上工作,服务器是Apache。 在其中一个站点实例中,php脚本setlocale(LC_ALL,“en_GB.utf8”);总是返回false。 当我执行locale-a时,可以在平台中找到这个区域设置“en_GB.utf8”。还注意到,setlocale(LC_ALL,0);返回“C”。 在这里,PHP/Apache似乎不知道底层平台的区域设置。有人能告诉我万一出了什么问题吗?

  • 问题内容: 我正在使用和编译选项。我已经尝试了所有: 但是错误: 在所有情况下都会发生。 问题答案: 将放在行尾。 gcc按照在命令行上出现的顺序处理为最终程序指定输入的参数。该参数被传递给链接器和参数,例如,被编译,并且将所得的目标文件被传递给链接器。 链接器还按顺序处理输入。当看到指定的库时,它会查看该库是否提供 了链接器当前需要的 任何符号。如果是这样,它将从库中复制带有这些符号的模块,并将

  • 本文向大家介绍PowerShell中使用return语句退出函数例子,包括了PowerShell中使用return语句退出函数例子的使用技巧和注意事项,需要的朋友参考一下 本文介绍在自定义PowerShell函数时,可以使用return语句来退出函数,同时return语句也可以返回值给函数的调用者。 使用return语句来直接退出函数。看一个退出函数的例子: 上面这个Get-NamedProces

  • 我是Node.js的新手,即使在阅读了其他stackflow用户提供的教程之后,我也在为承诺而挣扎。我已经花了整整一个晚上在这方面,我正在寻求帮助。我得到以下错误“Function return undefined,expected Promise or value”。我的代码在下面。我做错了什么?我还怀疑我必须使用await/async,因为它看起来像是我的代码在没有等待第一个get完成的情况下

  • return语句用来从一个函数 返回 即跳出函数。我们也可选从函数 返回一个值 。 使用字面意义上的语句 例7.7 使用字面意义上的语句 #!/usr/bin/python # Filename: func_return.py defmaximum(x, y):     ifx > y:         returnx     else:         returny printmaximum(