Javascript 函数中未定义意外值

Javascript 函数中未定义意外值,javascript,Javascript,我的代码输出字母表中每个单词的位置 功能字母位置(文本){ 常量字母='abcdefghijklmnopqrstuvwxyz'。拆分(“”); const arrayFromText=text.toLowerCase().split(“”); 字母表地图((字母、位置)=>{ if(从文本包括(字母)和字母表包括(字母)){ 返回位置+1; } }) } log(alphabetPosition('hello'))第一个示例 return是从传递给map return不是从alphabet

我的代码输出字母表中每个单词的位置

功能字母位置(文本){
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分(“”);
const arrayFromText=text.toLowerCase().split(“”);
字母表地图((字母、位置)=>{
if(从文本包括(字母)和字母表包括(字母)){
返回位置+1;
} 
})
}
log(alphabetPosition('hello'))第一个示例
  • return
    是从传递给
    map
  • return
    不是从
    alphabetPosition
    函数返回,因为该函数不返回任何内容,您的console语句将输出
    undefined
第二个例子
  • map
    中,它只是输出到日志
  • 控制台.log
    放在
    映射中可以确保定义
    位置+1
    ,但请注意,它不会从该函数返回任何内容
  • 由于在
    alphabetPosition
    末尾没有
    return
    语句,因此函数返回一个
    未定义的
  • 您调用了两个
    log
    方法,您应该看到
    position+1
    的值加上一个
    undefined
    ,因为函数不返回任何内容,您仍然在调用
    log
    方法

使其按预期工作的一种方法是返回映射。我添加了一个过滤器来忽略数组中所有未定义的值:

功能字母位置(文本){
常量字母='abcdefghijklmnopqrstuvwxyz'。拆分(“”);
const arrayFromText=text.toLowerCase().split(“”);
返回字母表.map((字母,位置)=>{
if(从文本包括(字母)和字母表包括(字母)){
返回位置+1;
}
}).过滤器(v=>!!v)
}

log(alphabetPosition('hello'))不从函数返回