gpt4 book ai didi

javascript - 如何根据字符串在字符串中的索引多次重复字符串

转载 作者:搜寻专家 更新时间:2023-11-01 05:03:18 26 4
gpt4 key购买 nike

我正在尝试编写一个以字符串作为参数的函数,并且输出应该是相同的字符串,每个字符的重复次数与字符的索引一样多,首字母大写。

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

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

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

function accum(s) {
var strSplit = s.toLowerCase().split('');

var newArr = strSplit.map((element, i) =>
element.repeat(i+1).charAt(0).toUpperCase()+element.substr(1));

console.log("the new Arr is: "+newArr.join('-'));
return newArr.join('-');
}

accum("abcd");

最佳答案

函数式风格(感谢@Redu 的评论):

const accum = (s) => Array.from(
s,
(c, i) => `${c.toLocaleUpperCase()}${c.repeat(i)}`
)
.join('-');

console.log(accum(''));
console.log(accum('a'));
console.log(accum('xyz'));

你的代码不起作用,因为在这一行

element.repeat(i+1).charAt(0).toUpperCase()+element.substr(1))

element.substr(1) 尝试获取从单个字符(始终为空字符串)的索引 1 开始的子字符串。您可能认为 element.repeat(i+1) 可以就地(即修改 element),但它会返回一个新字符串(请参阅MDN)。

您可以按如下方式解决此问题:

function accum(s) {
var strSplit = s.toLowerCase().split('');

var newArr = strSplit.map((element, i) =>
`${element.toLocaleUpperCase()}${element.repeat(i)}`);

console.log("the new Arr is: "+newArr.join('-'));
return newArr.join('-');
}

accum("abcd");

关于javascript - 如何根据字符串在字符串中的索引多次重复字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52025772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com