赋值表达式

时间:2018-04-27 20:50:43

标签: javascript variable-assignment

此处处理玩具问题的新人正在构建一个函数,该函数在字符串或下划线的任何地方将字符串转换为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;
}




4 个答案:

答案 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.

相关问题