javascript - Coderbyte 挑战 4 : Letter Changes - Won't Upper Case

标签 javascript

我在 Coderbyte 的挑战中遇到问题

使用 JavaScript 语言,让函数 LetterChanges(str) 获取正在传递的 str 参数,并使用以下算法对其进行修改。将字符串中的每个字母替换为字母表中紧随其后的字母(即,c 变为 d,z 变为 a)。然后将这个新字符串中的每个元音(a、e、i、o、u)大写,最后返回这个修改后的字符串。

这是我的代码:

function LetterChanges(str) {
str = str.toLowerCase();
var al = "abcdefghijklmnopqrstuvwxyz";
var vo = "aeiou";
var newStr = "";
for (var i = 0;i < str.length;i++) {
    if (al.charAt(al.indexOf(str.charAt(i))) == "z") {
        newStr += "A";
    }
    else if (str.charAt(i) == " "){
        newStr += " ";
    }
    else {
        if (al.charAt(al.indexOf(str.charAt(i))+1) == vo.charAt(vo.indexOf(str.charAt(i)))) {
            newStr += vo.charAt(vo.indexOf(str.charAt(i))+1).toUpperCase();
        }
        else {
            newStr += al.charAt(al.indexOf(str.charAt(i))+1)
        }
    }
}
   console.log(newStr);
}
LetterChanges("Argument goes here")

这会将以下内容返回到控制台: bshvnfou hpft ifsf

但是我需要返回的是: bshvnfOU hpft Ifsf

我不明白为什么我的 .toUpperCase() 不起作用。非常感谢您提供的任何帮助!

最佳答案

您的问题不是 toUpperCase() 不起作用,而是您的代码永远无法达到这一点。

你的

if (al.charAt(al.indexOf(str.charAt(i))+1) == vo.charAt(vo.indexOf(str.charAt(i))))

永远不会通过,因为+1。那里没有必要,如果删除它,就会出现大写元音。除此之外,您的代码还存在其他问题,但我会让您解决这些问题,作为挑战的一部分:-)

关于javascript - Coderbyte 挑战 4 : Letter Changes - Won't Upper Case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19848785/

相关文章:

javascript - 尝试替换所有 anchor 中的内容,但内容未被替换

javascript - 从 AJAX 请求结果更新 Bootstrap 警报文本

javascript - JavaScript 中异步执行一些方法的顺序

javascript - settimeout 没有延迟

javascript - 使用服务帐户的 Google drive api rest 上传文件不起作用

Javascript如何提交表单?

javascript - JQuery 方法和 DOM 属性

javascript - 在围绕名为 "root"的 div 类包装 (.wrap) 后找到 div 的类

javascript - Angular2 [innerHTML] if else 验证

javascript - Angular 2 - *ngif 在从可观察订阅进行变量更新时不刷新