此处处理玩具问题的新人正在构建一个函数,该函数在字符串或下划线的任何地方将字符串转换为camelcase。除了函数的倒数第二行之外我几乎已经解决了所有问题,在我返回字符串之前,我试图将每个索引处的字符(从我的索引数组)更改为大写。我得到的错误是左侧的错误分配,但我不确定原因。我控制台记录了作业的两面,他们似乎正在做我想做的事,但作业本身并没有奏效。谢谢你的帮助!
以下是代码:
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;
}

答案 0 :(得分:2)
问题在于使用左侧的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('');
}
答案 1 :(得分:1)
通过迭代字符来获取方法,您可以使用以下大写字母的标记。
function toCamelCase(str) {
var upper = false;
return str
.split('')
.map(c => {
if (c === '-' || c === '_') {
upper = true;
return '';
}
if (upper) {
upper = false;
return c.toUpperCase();
}
return c;
})
.join('');
}
console.log(toCamelCase('foo----bar_baz'));
答案 2 :(得分:1)
非常感谢你们指点我正确的方向。我没有将它连接回一个字符串,而是利用它已经是一个数组而已经完成了第一次。
此代码有效......
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)});
indexArray.forEach(index => {stringArray[index] = stringArray[index].toUpperCase()});
var string = stringArray.join('');
return string;
}

答案 3 :(得分:0)
听起来很奇怪,但是此错误是要添加的;在发生Parsing error: Invalid left-hand side in assignment expression
的行尾的分号。 More context here.