因此,我最近开始研究如何编写代码,并且我试图弄清楚如何创建一个函数,该函数将接受字符串并在条件满足的情况下将后缀'ay'添加到末尾。由于某种原因,每当我运行该函数时,我都会不断变得“未定义”。我曾尝试重写过几次,但是我总是出错,而且我不知道这是什么!如果有人可以仔细查看并解释我所缺少的内容,我将不胜感激!
function translate(val) {
let piggy = 'ay'
let newVal = Array.from(val);
let finalVal;
let i = 0;
while (i < newVal - 1) {
if (newVal[0] == 'a' || newVal[0] == 'e' || newVal[0] == 'i' || newVal[0] == 'o' || newVal[0] == 'u') {
finalVal = newVal.join('') + piggy;
return finalVal;
} else {
finalVal = newVal;
return finalVal;
}
i++
}
}
translate('apple')
答案 0 :(得分:0)
一目了然,您将从数组中减去number
。这将返回NaN
,甚至不会打入while循环。 (x < NaN
始终为假)
因为您没有点击while循环,所以该函数只是存在而从不返回任何值。这就是为什么您收到undefined
的原因。
如果要遍历新创建的数组,则需要使用newVal.length
。
固定代码如下:
let piggy = 'ay'
let newVal = Array.from(val);
let finalVal;
let i = 0;
while (i < newVal.length - 1) {
if (newVal[0] == 'a' || newVal[0] == 'e' || newVal[0] == 'i' || newVal[0] == 'o' || newVal[0] == 'u') {
finalVal = newVal.join('') + piggy;
return finalVal;
} else {
finalVal = newVal;
return finalVal;
}
i++
}
}
translate('apple')
答案 1 :(得分:0)
您遗漏了return
语句,并且不确定在这里要执行的操作...您是否在尝试将'ay'
附加到字符串(如果它以a开头)元音?
如果是,这是您代码的简化版本:
function translate( val ) {
if([ "a", "e", "i","o","u"].includes(val[0])) {
return val + 'ay';
}
else return val;
}