首页 > 解决方案 > 为什么字符串数组中的第一个字母不转换为大写?

问题描述

我接受输入字符串"ZpglnRxqenU"

并且必须返回带有该视图的字符串 "Z-Pp-Ggg-Llll-Nnnnn-Rrrrrr-Xxxxxxx-Qqqqqqqq-Eeeeeeeee-Nnnnnnnnnn-Uuuuuuuuuuu"

我几乎完成了,但我不知道为什么数组元素中的第一个字母不会变为大写。

function accum(s) {
  let str = s.toLowerCase();
  let arr = [];
  
  for(let i=0; i<str.length;i++){
      arr.push(str[i].repeat(i+1));
      arr[i][0].toUpperCase();
  }
  
  return arr.join('-');
}



console.log(accum("ZpglnRxqenU"));

// must be "Z-Pp-Ggg-Llll-Nnnnn-Rrrrrr-Xxxxxxx-Qqqqqqqq-Eeeeeeeee-Nnnnnnnnnn-Uuuuuuuuuuu"

标签: javascript

解决方案


字符串是不可变的,仅使用 .toUpperCase() 不会更新现有字符串,为此您可以尝试以下代码

function accum(s) {
  let str = s.toLowerCase();
  let arr = [];

  for(let i=0; i<str.length;i++){
      arr.push(str[i].repeat(i+1));
      var [firstLetter, ...rest] = arr[i]
      arr[i] = firstLetter.toUpperCase() +rest.join('')
  }

  return arr.join('-');
}

推荐阅读