【发布时间】:2021-03-10 14:33:11
【问题描述】:
我尝试编写在奇怪的情况下返回字符串的函数。例如:
toWeirdCase("String") //StRiNg
所以,它似乎有效,但并非在所有情况下都有效。当我们将字符串与双字母函数返回时,函数会返回一些非常奇怪的东西(没有双精度都很好):
我不需要其他方式来实现,我需要解释我的功能出了什么问题。有人可以吗?
function toWeirdCase(string) {
let arrSentence = string.toLowerCase().split(' ');
arrSentence = arrSentence.map((word) => {
for (let i = 0; i < word.length; i++) {
if (i % 2 == false) {
word = word.replace(word[i], word[i].toUpperCase())
}
}
return word
});
arrSentence = arrSentence.join(' ');
return arrSentence
}
console.log(toWeirdCase('Loooooks')) //LOOoooKs
console.log(toWeirdCase('Looks')) //LOokS
【问题讨论】:
-
.replace()调用不关心i的值;它会寻找那个特定的字母,并对字符串中找到的第一个字母进行操作。 -
旁注:我强烈建议从不将数字与
true或false进行比较。不要使用i % 2 == false。相反,请使用i % 2 === 0。带有布尔值的==的规则很容易被误解并且难以记住。例如,虽然Boolean(2)是true,但2 == true是false。
标签: javascript arrays string replace