我只是在创建一个用于检查对象数组中某个值的函数,但是由于某种原因,它一直在返回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完成的情况下
问题内容: 我正在尝试获取返回值,但始终无法定义。 我不确定如何获取任何返回值并在其他地方使用它?我需要使用此返回值来与其他函数进行验证,但是它似乎在范围之内。 这是我的代码: 问题答案: 移动以下行: 进入回调: 如果希望返回某些内容,则还需要向其添加回调,以便可以使用它的返回值。例如,如果您希望这样做: 这将无法正常工作,因为内容的最终值将被异步检索。相反,您需要这样做: 您不能异步返回数据。