Javascript 赋值表达式中的左侧无效

Javascript 赋值表达式中的左侧无效,javascript,variable-assignment,Javascript,Variable Assignment,这里的新手正在处理一个玩具问题,构建一个函数,在任何有破折号或下划线的地方将字符串转换为camelcase。除了函数的第二行到最后一行,我几乎解决了所有问题,在返回字符串之前,我尝试将每个索引(从索引数组)处的字符更改为大写。我得到的错误是左侧的错误分配,但我不知道为什么。我已经记录了作业的双方,他们似乎在做我想做的事情,但作业本身不起作用。谢谢你的帮助 代码如下: 函数到内存库(str){ var stringArray=str.split(“”); var indexArray=[]; s

这里的新手正在处理一个玩具问题,构建一个函数,在任何有破折号或下划线的地方将字符串转换为camelcase。除了函数的第二行到最后一行,我几乎解决了所有问题,在返回字符串之前,我尝试将每个索引(从索引数组)处的字符更改为大写。我得到的错误是左侧的错误分配,但我不知道为什么。我已经记录了作业的双方,他们似乎在做我想做的事情,但作业本身不起作用。谢谢你的帮助

代码如下:

函数到内存库(str){
var stringArray=str.split(“”);
var indexArray=[];
stringArray.forEach(字符=>{
如果(字符=='-'| |字符==='|){
变量索引=str.indexOf(字符);
str=str.slice(0,索引)+str.slice(索引+1)
指数推力(指数);
}
返回字符;
})
forEach(index=>{stringArray.splice(index,1)});
string=stringArray.join(“”);
forEach(index=>{string.charAt(index)=string.charAt(index.toUpperCase()});
返回字符串;

}
问题在于在左侧使用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('');
}

问题在于在左侧使用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('');
}

为了采用迭代字符的方法,可以使用以下大写字母的标志

函数到内存库(str){
var上限=假;
返回str
.拆分(“”)
.map(c=>{
如果(c=='-'| | c==''|){
上限=真;
返回“”;
}
如果(上){
上限=假;
返回c.toUpperCase();
}
返回c;
})
.加入(“”);
}

log(toCamelCase('foo----bar_-baz')对于通过迭代字符来采取方法,您可以使用以下大写字母的标志

函数到内存库(str){
var上限=假;
返回str
.拆分(“”)
.map(c=>{
如果(c=='-'| | c==''|){
上限=真;
返回“”;
}
如果(上){
上限=假;
返回c.toUpperCase();
}
返回c;
})
.加入(“”);
}

log(toCamelCase('foo----bar_-baz')啊,谢谢你们为我指明了正确的方向。我没有把它连接回一个字符串,而是利用它已经是一个数组的优势,首先循环通过它

这个代码有效

函数到内存库(str){
var stringArray=str.split(“”);
var indexArray=[];
stringArray.forEach(字符=>{
如果(字符=='-'| |字符==='|){
变量索引=str.indexOf(字符);
str=str.slice(0,索引)+str.slice(索引+1)
指数推力(指数);
}
返回字符;
})
forEach(index=>{stringArray.splice(index,1)});
forEach(index=>{stringArray[index]=stringArray[index].toUpperCase()});
var string=stringArray.join(“”);
返回字符串;

}
啊,谢谢你们两位为我指明了正确的方向。我没有把它连接回一个字符串,而是利用它已经是一个数组的优势,首先循环通过它

这个代码有效

函数到内存库(str){
var stringArray=str.split(“”);
var indexArray=[];
stringArray.forEach(字符=>{
如果(字符=='-'| |字符==='|){
变量索引=str.indexOf(字符);
str=str.slice(0,索引)+str.slice(索引+1)
指数推力(指数);
}
返回字符;
})
forEach(index=>{stringArray.splice(index,1)});
forEach(index=>{stringArray[index]=stringArray[index].toUpperCase()});
var string=stringArray.join(“”);
返回字符串;

}
听起来很奇怪,修复此错误的方法是添加;分号位于发生
解析错误的行末尾:赋值表达式的左侧无效

听起来很奇怪,修复这个错误的方法是添加;分号位于发生
解析错误的行末尾:赋值表达式的左侧无效

可能的重复可能的重复