【发布时间】:2019-03-04 20:14:12
【问题描述】:
我有一个函数,我正在遍历给定的字符串,交替每个字符的大小写并将其连接到变量alt。
为了正确循环,我从原始字符串中删除了空格。但我需要在函数末尾添加它们。
function alternatingCaps(str) { // 'hello world'
let words = str.toLowerCase().split(' '); // ['hello','world']
str = words.join(''); // 'helloworld'
let alt = '';
for(let i = 0; i < str.length; i++) {
if(i % 2 === 0)
alt += str[i].toUpperCase();
else
alt += str[i].toLowerCase();
}
return alt;
}
console.log(alternatingCaps('hello world'));
/* Output: "HeLlOwOrLd"
Wanted output: "HeLlO wOrLd" */
一旦alt 包含作为值包含在words 数组中的字符串,我想在单词的末尾添加一个空格。
这是我的尝试:
words.forEach(function(word) {
if(alt.toLowerCase().includes(word) && word[word.length - 1] === alt[i].toLowerCase())
alt += ' ';
});
它检查words 数组中的任何单词是否存在于alt 字符串中,以及字符串的当前字符迭代是否对应于单词中的最后一个字母。如果是这样,它会在字符串中添加一个空格。
但这并没有按预期工作。
> Output: "HeLlO wOr Ld"
> Wanted output: "HeLlO wOrLd"
我也想这会导致重复字母的问题。我怎样才能实现我的目标?
【问题讨论】:
标签: javascript arrays string for-loop