javascript - JavaScript:返回字符串的函数的输出输出“未定义”。为什么?
问题描述
函数“getNameByDate”中的console.log 将产生“Ben”和“Tom”。但是函数之外的其他 console.log 会产生“未定义”。为什么不一样的输出?
let arr = [
{
databaseObject: { geburt: "24.01.2012", name: "Ben"}
},
{
databaseObject: { geburt: "29.02.2012", name: "Tom"}
},
];
function getNameByDate(date) {
jQuery.each( arr, function( i, val ) {
if ( val.databaseObject.geburt == date ) {
console.log (val.databaseObject.name);
return val.databaseObject.name;
}
});
}
let dates = ["24.01.2012", "29.02.2012"];
jQuery.each( dates, function( i, val ) {
console.log(getNameByDate(val));
});
解决方案
在 jQuery.each-loop 中返回结果是不正确的。相反,我们必须将该循环中的结果分配给一个变量,通过返回 false 来中断循环并在循环之后返回该变量:
let arr = [
{
databaseObject: { geburt: "24.01.2012", name: "Ben"}
},
{
databaseObject: { geburt: "29.02.2012", name: "Tom"}
},
];
function getNameByDate(date) {
var friendsName;
jQuery.each( arr, function( i, val ) {
if ( val.databaseObject.geburt == date ) {
console.log (val.databaseObject.name);
friendsName = val.databaseObject.name;
return false; // exit loop
}
});
return friendsName;
}
let dates = ["24.01.2012", "29.02.2012"];
jQuery.each( dates, function( i, val ) {
console.log(getNameByDate(val));
});
推荐阅读
- json - psql 无法导入包含 JSON 的 pg_dump 文件
- javascript - 如何加速 reduce 和 forEach 方法?
- r - 自动化,数据框 %>% 嵌套 %>% purrr:map / walk tidyverse 工作流,有条件地选择列
- javascript - 如何在按钮单击时重置选中的复选框?(vue.js)
- javascript - 测试引用样式组件的伪元素
- apache-flink - 将 Flink API 从 1.4 升级到 1.10
- python - 使用请求模块向 NASA 网站发出请求
- excel - Excel 规则/宏,根据其值对单元格进行着色
- scalability - 如何解决 Argo 输出参数大小限制?
- r - 如何创建一个使用基于另一列的某些函数的列?