javascript - 赋值表达式中的左侧无效
问题描述
新人在这里解决一个玩具问题,构建一个将字符串转换为驼峰式的函数,只要有破折号或下划线。除了函数的倒数第二行之外,我几乎已经完成了所有工作,我试图在返回字符串之前将每个索引处的字符(从我的索引数组)更改为大写。我得到的错误是左侧的错误分配,但我不知道为什么。我已经控制台记录了任务的双方,他们似乎在做我想做的事,但任务本身没有工作。感谢您的任何帮助!
这是代码:
function toCamelCase(str){
var stringArray = str.split('');
var indexArray = [];
stringArray.forEach(character => {
if (character === '-' || character === '_') {
var index = str.indexOf(character);
str = str.slice(0, index) + str.slice(index+1)
indexArray.push(index);
}
return character;
})
indexArray.forEach(index => {stringArray.splice(index, 1)});
string = stringArray.join('');
indexArray.forEach(index => {string.charAt(index) = string.charAt(index).toUpperCase()});
return string;
}
解决方案
问题在于在左侧使用 string.charAt() 。这是不可能的,因为您试图在同一个调用中为函数的结果分配一些东西。将 string.charAt() 的值存储在中间变量中,它应该可以工作。检查下面的代码以获取工作示例,使用稍微不同的方法:
function toCamelCase(str){
var stringArray = str.split('');
var indexArray = [];
stringArray.forEach(character => {
if (character === '-' || character === '_') {
var index = str.indexOf(character);
str = str.slice(0, index) + str.slice(index+1)
indexArray.push(index);
}
return character;
});
indexArray.forEach(index => {stringArray.splice(index, 1)});
return stringArray.map((char, index) => {
return indexArray.includes(index) ? char.toUpperCase() : char;
}).join('');
}
推荐阅读
- hashmap - 以忽略 HashMap 值的通用方式公开 HashMap
- c# - 创建对对象的引用并将这些引用保存在缓存中
- cefsharp - CefSharp WpfControl 和渲染到图像
- c# - 划掉整行
- angular - 从 Firestore 的可观察查询返回组合数组
- android - 用于 React Native Android 的 Firebase 分析
- azure-devops - 尽管存在配置,但部署失败并在 VSTS CD 管道中出错
- jenkins - 如何通过 Jenkins Pipelines 中的短语开始构建
- auth0 - 如何将声明添加到分配有 auth0 的机器对机器应用程序类型的 JWT?
- javascript - SAPUI5句柄在对话框中输入