我正在创建一个函数,当你给它一个字符串时,它将返回偶数字符的大写字母和奇数字母的小写字母。所以,如果你给它" 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;
}
答案 0 :(得分:1)
您可以使用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;
}
答案 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;
不是您要更改i
和i+1
,只递增1会覆盖i+1
更改。这个简单的更改将解决您的问题。