这里的第二个函数可能有什么问题?



我正在学习数组函数,遇到了这个小测验。要从字符串中获得所有大写字母,第一个函数这里的第二个函数可能有什么问题?试图找到解决这个代码。但是不能,在break中,它可以工作,但在continue中不行,第二个函数可能有什么问题?

function getCapsWords(str) {
let result = []; // Empty array
const words = str.split(" "); // array
let i = 0;
while (i < words.length) {
let word = words[i];
word = word[0].toUpperCase() + word.slice(1);
if (word === "Good") break;
result.push(word); // populate arr
i++;
}
return result.join(" ");
}
function getCapsWords(str) {
let result = []; // Empty array
const words = str.split(" "); // array
let i = 0;
while (i < words.length) {
let word = words[i];
word = word[0].toUpperCase() + word.slice(1);
if (word === "Good") continue;
result.push(word); // populate arr
i++;
}
return result.join(" ");
}
getCapsWords("Hello World Good Good Morning!!!");

第二个版本的问题是您在continue之后有i++。因此,如果当前单词是Good,则永远不会增加数组索引,并且会卡在该单词上。

您应该在检查单词是否为Good之前增加索引

function getCapsWords(str) {
let result = []; // Empty array
const words = str.split(" "); // array
let i = 0;
while (i < words.length) {
let word = words[i];
word = word[0].toUpperCase() + word.slice(1);
i++;
if (word === "Good") continue;
result.push(word); // populate arr
}
return result.join(" ");
}

或者使用for循环代替while,这样增量不受循环体的控制。

function getCapsWords(str) {
let result = []; // Empty array
const words = str.split(" "); // array
fir (let i = 0; i < words.length; i++) {
let word = words[i];
word = word[0].toUpperCase() + word.slice(1);
if (word === "Good") continue;
result.push(word); // populate arr
}
return result.join(" ");
}

相关内容

最新更新