首页 > 解决方案 > 我想不通的编码挑战

问题描述

我最近遇到了一些我认为很容易完成的事情。情况是这样的:

修复代码以使所有语句都通过。

    function myFunction(s) {
        var c = s[0];
        // if the user enters an uppercase letter, return uppercase
        if(c === c.toUpperCase()) {
            return "uppercase";
        // if the user enters a lowercase letter, return lowercase
        } else if(c === c.toLowerCase()) {
            return "lowercase"; 
        // if the user enters a number, return digit
        } else if(!isNan(c)) {
            return "digit";
        } else {
            return "other";
        }
    }

通过输入 c === toUpperCase 和 toLowerCase 方法,我可以让前两个工作得很好。但是,当我在 myFunction(1) 中输入一个数字时,它总是会返回一个 typeError。

我不知道为什么。我假设我可能不明白为什么我们将 s 重新分配给 s[0]。

谁能向我解释我需要做什么才能正确获取所有返回值?

标签: javascript

解决方案


当您访问输入的第一个字符时,假设您正在传递一个字符串

你可以尝试这样的事情:

function myFunction(s) {
        var c = s[0];
        // if the user enters an uppercase letter, return uppercase
        if( c >= 'A' && c <= 'Z') {
            return "uppercase";
        // if the user enters a lowercase letter, return lowercase
        } else if(c >= 'a' && c <= 'z') {
            return "lowercase"; 
        // if the user enters a number, return digit
        } else if(!isNaN(c)) {
            return "digit";
        } else {
            return "other";
        }
    }

样品测试:

myFunction("78")
"digit"

myFunction("%")
"other"

myFunction("S")
"uppercase"

myFunction("d")
"lowercase"

推荐阅读