I am trying to write a function with a string as a parameter, and the output should be the same string with each character repeated as many times as the character's index, with capitalizing the first letter.
For example, function accum(abc) should return: A-Bb-Ccc
accum(zytx) should return: Z-Yy-Ttt-Xxxx
I tried the following code but it is not working. Can someone help me out?
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");
In functional style (thanks to @Redu for the comment):
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'));
Your code doesn't work because in this line
element.repeat(i+1).charAt(0).toUpperCase()+element.substr(1))
element.substr(1) tries to get the substring starting at index 1 of a single character (which is always the empty string). You probably thought that element.repeat(i+1) would work in place (i.e. modify element) whereas it returns a new string (see MDN). 
You can fix this as follows:
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");
The problem is your .charAt(0) which is always taking the first character, and you're not repeating the lowercase letters afterwards.
function accum(s) {
  var strSplit = s.toLowerCase().split('');
  var newArr = strSplit.map(
    (element, i) => element.toUpperCase()+element.repeat(i));
  return newArr.join('-');
}
console.log("the new Arr is:", accum("abcd"));
console.log("zytx:", accum("zytx"));
You can simplify this even further, by removing the .substr() and just put element.repeat(i). On the first iteration, i will be 0 and return an empty string.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With