赋值表达式中的左侧无效
Invalid left-hand side in assignment expression
这里的新人正在解决玩具问题,构建一个函数,将字符串转换为驼峰式大小写,只要有破折号或下划线。除了函数的倒数第二行,我几乎已经解决了所有问题,我试图在 return 字符串之前将每个索引处的字符(从我的索引数组)更改为大写。我得到的错误是左侧的错误分配,但我不确定为什么。我已经在控制台记录了任务的双方,他们似乎在做我想做的事,但任务本身不起作用。感谢您的帮助!
代码如下:
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('');
}
为了采用迭代字符的方法,您可以为以下大写字母使用标志。
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'));
啊,谢谢你们为我指明了正确的方向。我没有将它连接回一个字符串,而是利用它已经是一个数组,然后先循环遍历它。
此代码有效...
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;
}
虽然听起来很奇怪,但解决这个错误的方法是添加 ;出现 Parsing error: Invalid left-hand side in assignment expression
的行尾的分号 。 More context here.
这里的新人正在解决玩具问题,构建一个函数,将字符串转换为驼峰式大小写,只要有破折号或下划线。除了函数的倒数第二行,我几乎已经解决了所有问题,我试图在 return 字符串之前将每个索引处的字符(从我的索引数组)更改为大写。我得到的错误是左侧的错误分配,但我不确定为什么。我已经在控制台记录了任务的双方,他们似乎在做我想做的事,但任务本身不起作用。感谢您的帮助!
代码如下:
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('');
}
为了采用迭代字符的方法,您可以为以下大写字母使用标志。
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'));
啊,谢谢你们为我指明了正确的方向。我没有将它连接回一个字符串,而是利用它已经是一个数组,然后先循环遍历它。
此代码有效...
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;
}
虽然听起来很奇怪,但解决这个错误的方法是添加 ;出现 Parsing error: Invalid left-hand side in assignment expression
的行尾的分号 。 More context here.