Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将indexOf()值增加1_Javascript_Arrays_Repeat_Indexof - Fatal编程技术网

Javascript 将indexOf()值增加1

Javascript 将indexOf()值增加1,javascript,arrays,repeat,indexof,Javascript,Arrays,Repeat,Indexof,我需要以如下方式在一系列字母中重复每个字母: 例如[a,b,c,d]=>a,bb,ccc,dddd 我猜这部分有问题:splitStr.indexOf(x)+1) 请你看一下,给我一个提示,这里出了什么问题?谢谢(最终结果应为A-Bb-Ccc-Dddd字符串) 功能累计器{ var splitStr=s.toLowerCase().split(“”)/[a,b,c,d] var arr=splitStr.map(x=>x.repeat(splitStr.indexOf(x)+1))/[a,bb

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

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

请你看一下,给我一个提示,这里出了什么问题?谢谢(最终结果应为A-Bb-Ccc-Dddd字符串)

功能累计器{
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())
返回arr.join('-')
}

console.log(acum('abcd'))
使用
map()
callback的索引参数,保存并在数组中再次查找它

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

功能累计器{
var splitStr=s.toLowerCase().split(“”)/[a,b,c,d]
var arr=splitStr.map((x,i)=>x.toUpperCase()+x.repeat(i));
返回arr.join('-')
}

log(acum('abcd'))
您可以使用回调的
索引
参数(第二个),并在第一个
映射()中使用大写字母保存性能

功能累计器
{
var splitStr=s.toLowerCase().split(“”);
var arr=splitStr.map((x,idx)=>x.toUpperCase()+x.repeat(idx));
返回arr.join('-')
}
console.log(累计('abcd'))
.as控制台{背景色:黑色!重要;颜色:石灰;}

.作为控制台包装{max height:100%!important;top:0;}
您可以这样映射和连接:

var s = 'AbCd';
var array1 = s. toLowerCase().split(''); //['a','b','c','d'];
const map1 = array1.map((x, index) => x.toUpperCase() + x.repeat(index)).join('-');

console.log(map1);
你可以用。它返回一个新字符串,该字符串包含调用它的字符串的指定数量的副本,并连接在一起

 var list = ['a', 'b', 'c', 'd'];
 var result = Array.from(list, (v, i) => {
                  let value = v.repeat(i + 1);
                  return value.charAt(0).toUpperCase() + value.slice(1)
                 }).join('-');
 console.log(result);

你的代码片段似乎没有问题,结果是
A-Bb-Ccc-Dddd
?你可以使用
map
回调的第二个参数:
.map((x,i)=>x.repeat(i+1))
我没有投票,但可能人们会否决一个与几分钟前发布的答案完全相同的答案。如果这是一条路,为什么不直接投票给charlietfl?也许这就是原因。我把我的贴在网上,然后再刷新和看到他的。只是没有费心在事实发生后证明他的观点,然后在确认相似性后删除我的观点。这是标准协议吗?@MarkMeyer您提到的答案的第一个版本只考虑了
map()
回调上
index
的使用,他在之后对其进行了编辑以改进,而我的第一个版本和这个版本也考虑了其他事项。所以我被迫快速回答以获得选票?有时候,当你在做一个答案时,如果有新的答案出现,你就不会去寻找。我不认为这是一个否决投票的好理由,除非答案之间的间隔超过10或15分钟。@Shidersz这只是一个假设。哦!谢谢!现在我明白我应该在那里做什么了。还感谢您向我展示了如何将这两个map()组合成一个。