我该如何完成这个循环?连接前两个字符

时间:2015-03-09 05:16:56

标签: javascript

我正在创建一个函数,当你给它一个字符串时,它将返回偶数字符的大写字母和奇数字母的小写字母。所以,如果你给它" HELLO"它会给你" HeLlO"。这显然是错误的,因为它只适用于前两个字符。如何完成循环以使它不会将字符串连接在一起?

function evenOddChange(source)
{
    var i;
    var result;
    i = 0;
    result = "";
    while ( i < (source.length))
    {
        result = result + source.toUpperCase().charAt(i) + source.toLowerCase().charAt(i + 1);
        i = i + 1;
    }
    return result;
}

3 个答案:

答案 0 :(得分:1)

您可以使用modulo检查其evenOdd

function evenOddChange(source)
{
    var i;
    var result;
    i = 0;
    result = "";
    while ( i < (source.length))
    { 
        if(i%2==0){
           result = result + source.toUpperCase().charAt(i);
        }else{
           result = result + source.toLowerCase().charAt(i);
        }

        i = i + 1;
    }
    return result;
}

答案 1 :(得分:1)

只需使用模数来查找索引是奇数还是偶数,然后使用括号表示法。

function evenOddChange(source) {
    var i = 0, result = "";
    while (i < source.length)
       result += source[i][i++ % 2 == 0 ? "toUpperCase" : "toLowerCase"]();
    return result;
}

请注意,当我们执行i++ % 2时,模数运算符会在增加之前对i 的值进行操作。只有在下一次迭代中才能感受到增量效果。

答案 2 :(得分:0)

增加2,而不是1:

i = i + 2;

不是您要更改ii+1,只递增1会覆盖i+1更改。这个简单的更改将解决您的问题。