带substr()和slice()的PigLatin问题
PigLatin Issue with substr() and slice()
目标给定一个字符串,将该字符串翻译成PigLatin(如果该字符串以元音开头,请在字符串末尾附加"way",否则查找第一个元音,取所有前面的字母并放在str的末尾,添加"ay"(。
代码
function translate(str) {
//list vowels
var vowel = ['a', 'e', 'i', 'o', 'u'];
//if first letter = vowel, add 'way' to end of sentence
// else return all letters before first vowel and append to end (with 'ay')
for (var i = 0; i < str.length; i++) {
if (vowel.indexOf(str[0]) > -1) {
return str + 'way';
} else {
return str.substr(i+1) + str.slice(0,i+1) + 'ay';
}
}
}
translate("dresser");
问题
- 上述代码适用于"algorithm"answers"desk"等情况,但因"glove"而失败,这让我相信问题出在.substr((或.slice((周围。进一步调查认为这是一个逻辑错误。感谢您的帮助
问题是,在第一次迭代期间,代码总是从循环中返回。CCD_ 1永远不会大于0。
您应该做的(对于初学者(是从循环内部删除检查。像这样:
function translate(str) {
//list vowels
var vowel = ['a', 'e', 'i', 'o', 'u'];
//if first letter = vowel, add 'way' to end of sentence
if (vowel.indexOf(str[0]) > -1) {
return str + 'way';
}
// else return all letters before first vowel and append to end (with 'ay')
for (var i = 0; i < str.length; i++) {
if (vowel.indexOf(str[i]) > -1) {
return str.substr(i) + str.slice(0,i) + 'ay';
}
}
}
这个代码应该可以完成任务。
您返回的值没有测试字符是否为元音。
function translate(str) {
//list vowels
var vowel = ['a', 'e', 'i', 'o', 'u'];
//if first letter = vowel, add 'way' to end of sentence
// else return all letters before first vowel and append to end (with 'ay')
for (var i = 0; i < str.length; i++) {
if (vowel.indexOf(str[0]) > -1) {
return str + 'way';
} else if(vowel.indexOf(str[i]) !== -1) {
return str.substr(i) + str.slice(0,i) + 'ay';
}
}
}
请注意我是如何添加if
来测试字符是否为元音的。
jsfiddle
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 将PHP变量传递给jQuery时遇到问题
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- 我的jQuery插件参数没有正确启动,遇到了问题
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- TableExport jquery插件:文件名和扩展名问题
- JavaScript Pub/Sub属性访问问题
- JavaScript异步问题
- 如何解决Yii中的页面刷新问题
- Safari(Mac OS)上的jQuery平滑滚动问题
- jqGrid树网格问题
- 使用正则表达式评估电子邮件地址时出现性能问题
- 如何消除代码中的未定义和其他问题
- JavaScript代码问题:我正在将对象转换为数组
- 三星智能电视应用程序;Brightcove示例应用程序远程控制问题
- 由于iframe导致的问题
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 带substr()和slice()的PigLatin问题