Не могу понять работу метода .map?
function camelize(str) { // на вход приходит строка
   return str      // вот тут пока ещё строка
     .split('-')   // здесь из этой строки сделали массив, разбив её по символу дефиса
                   // ниже пошёл массив ["lol", "kek", "cheburek"]
     .map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1)) // что-то сделали с каждым элементом массива
     .join(''); // соединяет ['my', 'Long', 'Word'] в 'myLongWord'
 }
Теперь упростим непонятную строку. 
К ней пришёл массив, у которого вызывается метод map() – он просто применит функцию в нём к каждому элементу массива. На выходе получится новый массив..map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1)) //**

// то же самое, что:
.map(
  function(word, index) {
     return index == 0 ? word : word[0].toUpperCase() + word.slice(1);
  }
)

// то же самое, что:
.map(
  function(word, index) {
    if (index == 0) {
      return word;
    } else {
      return word[0].toUpperCase() + word.slice(1);
    }
  }
)
Метод массива .map() вызывает функцию, которая в нём аргументом, для каждого элемента массива и передёт в неё следующие три параметра:Текущий обрабатываемый элемент массива. Индекс текущего обрабатываемого элемента в массиве.Массив, по которому осуществляется проход.
**
Пройдемся по массиву и вернем новый массив с такими элементами:
Если шагнули на нулевой элемент (index == 0),  то вернем слово как элемент в новый массив как есть (.... ? word : ....)
Если шагнули на ненулевой элемент, то Меняем регистр у первой буквы (... : word[0].toUpperCase() + word.slice(1)...) и вернем результат как элемент в новый массив.