Ответы пользователя по тегу JavaScript
  • Почему возникает TypeError?

    magerrrr
    @magerrrr
    JS Software Engineer
    В Вашем случае когда в массиве значение под индексом 0 равно undefined функция вылетает с ошибкой.
    Для того, чтобы избежать такого поведения необходимо добавить проверку на undefined

    В вашей функции это будет выглядеть следующим образом:
    const convertText2 = (text) => {
    
      if (text[0] === undefined) {
        return 'Undefined value!';
      }
    
       return text[0].toUpperCase() === text[0] || text === '' ? text : reverse(text)
    };


    по хорошему перед тем как писать логику функции Вам необходимо проверить что text это массив (text.isArray()), раз Вы обращаетесь к его первому элементу.
    + раз уж это массив, а Вы дальше будете писать логику по прохождению каждого элемента массива, то перед этой логикой для каждого элемента проверку на undefined и null необходимо добавить
    Ответ написан
  • Что означает конструкция var Name = (function(){})()?

    magerrrr
    @magerrrr
    JS Software Engineer
    В прошлом в JavaScript не было лексического окружения на уровне блоков кода.

    Так что программистам пришлось что-то придумать. И то, что они сделали, называется «immediately-invoked function expressions» (аббревиатура IIFE), что означает функцию, запускаемую сразу после объявления.
    Это не то, что мы должны использовать сегодня, но, так как вы можете встретить это в старых скриптах, полезно понимать принцип работы. (продолжение на learn.javascript.ru)

    Также можно прочитать на medium с примерами и подробным объяснением.
    Ответ написан
  • Как в React брать значения из адресной строки и отправлять запрос?

    magerrrr
    @magerrrr
    JS Software Engineer
    Query-string создана для упрощения работы с адресной строкой всех браузеров.

    Использование:

    const queryString = require('query-string');
     
    queryString.parseUrl('https://foo.bar?foo=bar');
    //=> {url: 'https://foo.bar', query: {foo: 'bar'}}
     
    queryString.parseUrl('https://foo.bar?foo=bar#xyz', {parseFragmentIdentifier: true});
    //=> {url: 'https://foo.bar', query: {foo: 'bar'}, fragmentIdentifier: 'xyz'}
    Ответ написан
  • Как проверить равенство элементов?

    magerrrr
    @magerrrr
    JS Software Engineer
    Для решения задачи важно, чтобы код был читабельным и понятным.

    const arr = [1, 2, 3, 2, 3, 4];
    
    const replaceTheSameElementsToX = array => {
        const result = [];
        let coincidence = 0;
    
        for(let i = 0; i < array.length; i++) {
            array.map(el => el === array[i] ? coincidence++ : coincidence);
    
            if (coincidence === 1) {
                result.push(array[i]);
            } else if (coincidence > 1) {
                result.push('x');
            }
            coincidence = 0;
        }
        return result; 
    }
    
    replaceTheSameElementsToX(arr); // [1, "x", "x", "x", "x", 4]


    или тоже самое с помощью методов массива:

    const arr = [1,2,3,2,3,4];
    
    const findTheSameNumbers2 = array => array.map((elementOfBaseArray,i,baseArray) => baseArray.reduce((coincidence, currentValue, index, elementAsArray) => elementOfBaseArray === elementAsArray[index] ? coincidence + 1 : coincidence, 0) === 1 ? elementOfBaseArray : 'x');
    
    findTheSameNumbers2(arr); // [1, "x", "x", "x", "x", 4]
    Ответ написан