我需要以这种方式在一个字母数组中重复每个字母:
例如[a,b,c,d] => a,bb,ccc,dddd

我猜这部分有问题:splitStr.indexOf(x)+ 1)

您能否看一下,并给我提示一下这里出了什么问题?谢谢。 (最终结果应为字符串形式的A-Bb-Ccc-Dddd)



function accum(s) {
  var splitStr = s.toLowerCase().split('') // [a, b, c, d]
  var arr = splitStr.map(x => x.repeat(splitStr.indexOf(x) + 1)) // [a, bb, ccc, ddd]
  arr = arr.map(a => a.slice(0, 1).toUpperCase() + a.slice(1).toLowerCase())
  return arr.join('-')
}
console.log(accum('abcd'))

最佳答案

使用map()回调的index参数并将其保存在数组中再次查找。

您也可以将其合并为一个map()而不是两个



function accum(s) {
  var splitStr = s.toLowerCase().split('') // [a, b, c, d]
  var arr = splitStr.map((x, i) => x.toUpperCase() + x.repeat(i));
  return arr.join('-')
}
console.log(accum('abcd'))

关于javascript - 将indexOf()值增加一,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55463143/

10-11 11:14