javascript - 这里的第二个功能可能有什么问题?
问题描述
我正在学习数组函数并遇到了这个测验。要从字符串中获取所有大写字母,第一个函数这里的第二个函数可能有什么问题?试图找到此代码的解决方案。但是不能,用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!!!");
解决方案
第二个版本的问题是你有i++
after continue
。因此,如果当前单词是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(" ");
}
推荐阅读
- javascript - Redux:多次分派一个动作导致太多的api请求
- html - 卡在弹性盒子里!制作响应式图片库
- firebase - 如何使用firebase电话身份验证添加OTP过期时间
- python - pandas read_csv 通过标准输入问题添加属性
- java - 在 Playstore 上启动后,我的 Flutter 应用程序在多个设备上崩溃
- node.js - Application Insight - nodejs - 分布式跟踪不监视服务总线
- testing - 通过匿名自执行函数调用 Testcafe 't' 处理程序
- python - 如何从 CoNLL 格式转换为 spacy 格式
- javascript - 关于javascript箭头函数表达式
- java - Spring Boot Jpa:我可以将 JSON 文件配置为数据库吗?