如何完成此循环?连接前面的两个字符

How do I finish this loop? Concatenate two previous characters

本文关键字:字符 两个 前面 何完成 循环 连接      更新时间:2023-09-26

我正在制作一个函数,当您给它一个字符串时,它将返回偶数字符的大写和奇数字符的小写。所以如果你给它"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;
}
您可以使用

modulo来检查其even还是Odd

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;
}

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

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,而不是 1:

i = i + 2;

不是你正在改变ii+1,只增加一个将覆盖i+1变化。这个简单的更改将解决您的问题。