【问题标题】:JavaScript: it works, but what is a more efficient way to write this function?JavaScript:它可以工作,但是编写此函数的更有效方法是什么?
【发布时间】:2015-05-20 05:17:59
【问题描述】:

有没有比使用这么多else if 语句更好的方法来做到这一点?

在下面的输入框中输入一个字符串。如果字符串以:

开头

应该显示“a”或“A”“以A开头”。 “b”或“B”“开始 with B" 应该显示。"c" 或 "C" "starts with C" 应该是 显示。应显示“d”或“D”“以 D 开头”。 “e”或“E” 应显示“以 E 开头”。任何其他“开始于 应该显示其他内容。

function startsWith(input) {
    if(input==='a' || input==='A') {
        return ("starts with A");
    }
    else if(input==='b' || input==='B') {
        return ("starts with B");
    }
    else if(input==='c' || input==='C') {
        return ("starts with C");
    }
    else if(input==='d' || input==='D') {
        return ("starts with D");
    }
    else if(input==='e' || input==='E') {
        return ("starts with E");
    }
    else {
        return ("starts with something else");
    }
}

【问题讨论】:

    标签: javascript arrays function loops if-statement


    【解决方案1】:

    这样的?

    function startsWith(input) {
        start = input[0].toUpperCase();
        if (start < 'F' && start >= 'A') {
            return "starts with " + start;
        }
        return "starts with something else";
    }
    

    【讨论】:

    • 大声笑你不能这样做&lt; 'F'
    • 是的,你可以@EdwinReynoso。
    • 这个函数在startsWith("1sfafas")之类的东西上不幸中断了。
    • @EvanKnowles,已修复 ^_^
    • 可能是因为我从来没有这样做过,现在我想起来我可能有变量,甚至没有意识到Array#sort
    【解决方案2】:

    试试这个(它也会检查第一个字符)

    function startsWith(input) {
      return "starts with " + (input[0].toLowerCase() >= 'a' && input[0].toLowerCase() <= 'e' ? input[0].toUpperCase() : 'something else');
    }
    

    【讨论】:

    • 为什么一遍又一遍地调用.toUpperCase() 只是将它保存到一个变量中。
    • 我只想要一个衬里;)
    • 哦,好吧,但是是的,你的三元运算符使它成为一个很好的单行,所以为了性能明智保存到一个变量。
    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多