Search code examples
javascriptfunctionmethodsindexofhigher-order-functions

Repeat character depending on position in array + 1


I'm trying to get an output like this:

['h', 'ee', 'lll', 'llll', 'ooooo']

currently my out put is:

[ 'h', 'ee', 'lll', 'lll', 'ooooo' ]

The issue is the second occurrence of the "l" isn't being repeated one more time because I'm counting the index of the letter then adding 1 and it is only counting the first occurrence of the "l". This is the code I have so far, any help would be great.

function mumble(string) {
  string.toLowerCase();
  let arrayPush = [];
  let array = string.split("");
  let count = 0;
  let char = [];
  array.map((letter) => {
    count = array.indexOf(letter);

    arrayPush.push(letter.repeat(count + 1));
  });

  return arrayPush;
}

console.log(mumble("hello")); 

Solution

  • Don't use indexOf, use the second parameter in the .map callback to determine the index (and from that, the number of times to repeat the string).

    function mumble(string) {
      string.toLowerCase();
      let arrayPush = [];
      let array = string.split("");
      let count = 0;
      let char = [];
      array.map((letter, i) => {
        arrayPush.push(letter.repeat(i + 1));
      });
    
      return arrayPush;
    }
    
    console.log(mumble("hello"));