• Почему тут TypeError у map?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    А зачем там str и что вы имели ввиду, написав это?
    Просто уберите.

    function camelize(str) {
        return str
            .split('-')
            .map(function(word, index) {
                if (index == 0) {
                    return word;
                } else {
                    return word[0].toUpperCase() + word.slice(1);
                }
            })
            .join('')
    }
    
    let str = prompt('Введите текст через дефис');
    alert(camelize(str));


    Можно и покороче

    function camelize(str) {
        return str
            .split('-')
            .map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1))
            .join('')
    }
    
    let str = prompt('Введите текст через дефис');
    alert(camelize(str));


    const upper = (word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1);
    function camelize(str) {
        return str
            .split('-')
            .map(upper)
            .join('')
    }
    
    let str = prompt('Введите текст через дефис');
    alert(camelize(str));


    const upper = (word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1);
    const camelize = str => str.split('-').map(upper).join('');
    
    let str = prompt('Введите текст через дефис');
    alert(camelize(str));
    Ответ написан
    1 комментарий
  • Почему тут TypeError у map?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    alert(camelize(str));
    надо же передать аргумент в функцию..

    и зачем тут .str в .str.join('') – уберите, оставьте только .join('')
    Ответ написан
    Комментировать
  • Не могу понять работу метода .map?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    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() вызывает функцию, которая в нём аргументом, для каждого элемента массива и передёт в неё следующие три параметра:
    1. Текущий обрабатываемый элемент массива.
    2. Индекс текущего обрабатываемого элемента в массиве.
    3. Массив, по которому осуществляется проход.
    Ответ написан
    1 комментарий
  • Как вывести элементы из массива в список?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    У Вас только 1 ul на странице, а переменная i у Вас вообще никак не относится к найденным ul
    let ula = document.getElementsByTagName("ul")[0];
    
    for(let i = 0; i < arr.length; i++) {
      ula.insertAdjacentHTML('beforeend', `
      <li>
        <a href="#">${arr[i]}</a>
      </li> 
      `);
    }
    Ответ написан
    1 комментарий