Rose debug info
---------------

Кодинг — это весело

Из фейсбука:
«Какой язык учить после английского?»
«Python или Javascript»

С декабря неспешно прохожу курс на «JavaScript: основы и современныe возможности языка» на Нетологии и это довольно весело.

Курс состоит из серии вебинаров с несколькими преподавателями. Смотришь вебинар (в трансляции или записи — как удобно), проходишь небольшой тест и делаешь домашку, подсматривая в презентацию. До меня доходит не сразу, поэтому еще лазаю на Современный учебник Javascript
— для таких как я там всё разжевано до мелочей.

В свободное от вебинаров и домашки время делаю упражнения на CodeWars. Там есть система «прокачки» и тебе предлагаются упражнения согласно твоему уровню. Больше всего нравится после выполнения смотреть как его решили другие участники.

В то время как я строчу три функции и уже сам путаюсь в передаче переменных туда-сюда, ребята решают всё в две строчки. Кодинг в общем и JS в частности — это весело!

Для примера мой вариант:

function anagrams(word, words) {
  
  function countLtrs(word) {
    let ltrs  = [];

    for (let i=0; i < word.length; i++) {
      if (word[i] in ltrs)  {
        ltrs[word[i]]++;
      } else {
        ltrs[word[i]] = 1;
      }
    }
    return ltrs;
  }

  let ltrsOne = countLtrs(word), result = [], check = true;
  
  for (let word of words) {
    let ltrsTwo = countLtrs(word), check = true;
   
    for (let key in ltrsTwo) {
      if (key in ltrsOne) {
        if (!(ltrsOne[key] === ltrsTwo[key])) {
           check = false;
        }
      } else check = false;
    }
    if (check) result.push(word);
  }
console.log(result);
}

30 строчек.

И «лучший» вариант:

String.prototype.sort = function() {
  return this.split("").sort().join("");
};

function anagrams(word, words) {
  return words.filter(function(x) {
      return x.sort() === word.sort();
  });
}

5 строчек. А так можно было?

В общем, разница очевидна! Будем учиться далее :)

Share
Send