Javascript 如何根据字符串中的索引将字符串重复多次

Javascript 如何根据字符串中的索引将字符串重复多次,javascript,string,Javascript,String,我想写一个以字符串作为参数的函数, 并且输出应该是相同的字符串,每个字符重复的次数与字符索引的次数相同,首字母大写 例如,函数acum(abc)应返回:A-Bb-Ccc acum(zytx)应返回:Z-Yy-Ttt-Xxxx 我尝试了以下代码,但它不起作用。有人能帮我吗 功能累计器{ var strSplit=s.toLowerCase().split(“”); var newArr=strSplit.map((元素,i)=> 重复(i+1.charAt(0.toUpperCase()+ele

我想写一个以字符串作为参数的函数, 并且输出应该是相同的字符串,每个字符重复的次数与字符索引的次数相同,首字母大写

例如,函数
acum(abc)
应返回:
A-Bb-Ccc

acum(zytx)
应返回:
Z-Yy-Ttt-Xxxx

我尝试了以下代码,但它不起作用。有人能帮我吗

功能累计器{
var strSplit=s.toLowerCase().split(“”);
var newArr=strSplit.map((元素,i)=>
重复(i+1.charAt(0.toUpperCase()+element.substr(1));
log(“新Arr是:“+newArr.join('-'));
返回newArr.join('-');
}

累计(“abcd”)问题在于你的
.charAt(0)
总是取第一个字符,之后你不会重复小写字母

功能累计器{
var strSplit=s.toLowerCase().split(“”);
var newArr=strSplit.map(
(element,i)=>element.toUpperCase()+element.repeat(i));
返回newArr.join('-');
}
console.log(“新的Arr为:”,累计(“abcd”);

console.log(“zytx:”,accum(“zytx”)这可以通过使用简单的正则表达式和
重复来实现,如:

功能累计器{
var i=0;
返回s.replace(//g,m=>“-”+m.toUpperCase()+m.repeat(i++).slice(1);
}
控制台日志(累计(“abcd”)采用功能性风格(感谢@Redu的评论):

const accum=(s)=>Array.from(
s
(c,i)=>`${c.tolocalueppercase()}${c.repeat(i)}`
)
。加入(“-”);
控制台日志(累计('');
控制台日志(accum('a'));

console.log(acum('xyz'))顺便说一句,您的规范仅在数组索引基于1时有效。如果它们是基于0的,则第一个字符将始终映射到空字符串(即重复0次)。例如,
acum('abc')=='-B-CC'
。这很好。。但作为提醒,
Array.from()
已经接受了一个映射回调。因此,您可以将代码简化为数组@Redu谢谢,我不知道!文本不需要
.charAt(0)
<代码>元素
已经是单个字符。