javascript - 为什么带有条件的 for 循环不会一直迭代到数组的末尾?
问题描述
我正在编写一个函数来更改字符串中的字母(为驼峰式),并且破折号和下划线用作单词结尾的标记。我想知道为什么我的 for 循环在到达数组末尾之前就停止了,特别是因为没有使用条件代码。
我试过控制台记录我的 tmp 数组,它有我想要的('_'或'-')。但是在条件之后代码似乎搞砸了,所以我认为它与此有关。
for (let letter of arr) {
arr.pop(letter)
if (letter === '-' || letter === '_') {
let tmp = []
tmp.push(letter)
console.log(tmp)
} else {
camelArr.push(letter)
console.log(camelArr)
}
}
解决方案
就像指出的那样,您在循环时修改了数组。
使用 .camelCase 函数可能有意义Array.reduce
。
例如。
const camelCase = str =>
[...str].reduce((a, v) => {
if (['_', '-'].includes(v)) a.firstLet = true;
else {
a.str += a.firstLet ? v.toUpperCase() : v.toLowerCase()
a.firstLet = false;
}
return a;
}, {str: '', firstLet: false}).str;
console.log(camelCase('this_is-a-Test'));
console.log(camelCase('one-two-three-four'));
推荐阅读
- python - 如何根据条件聚合功能?
- jquery - Divs 的数字适合浏览器窗口并调整大小
- ionic-framework - 如何使用 Ionic 和 Cordova 联系人重新加载联系人数据?
- javascript - 尝试使用 Angular 创建数据时出错
- ajax - 尝试从导航栏创建下拉菜单以登录,但从 ASP.NET MVC 帐户控制器调用登录方法时遇到问题
- javascript - 为什么 cookie 登录系统不能在 iframe 上运行?
- node.js - 试图从数据库中删除文件上传
- amazon-web-services - 在 Web ui 创建的实例上触发 Cloudwatch 规则?
- c# - C# 将许多 For 循环重构为一个
- postgresql - 如何将本周的数据与去年同期的数据进行比较