Git Product home page Git Product logo

core-js-101's Introduction

Core JS 101

⚠️ Please note that you mustn't open PRs that contains the answers to this repo!

However, PRs with the fixes or proposals are welcomed!

Task

The task is to implement functions on different Core JS topics. There are eight modules with different tasks. Each module consists of tasks for specified topic:

  1. Strings
  2. Numbers
  3. Arrays
  4. Date
  5. Objects
  6. Promises
  7. Conditions and Loops
  8. Functions and Closures

Active usage of documentation is strongly recommended!

Prepare and test

  1. Install Node.js

  2. Fork this repository: https://github.com/mikhama/core-js-101/

  3. Clone your newly created repo: https://github.com/<%your_github_username%>/core-js-101/

  4. Go to folder core-js-101

  5. To install all dependencies use npm install

  6. Each task is usually a regular function:

      /**
       * Returns the result of concatenation of two strings.
      *
      * @param {string} value1
      * @param {string} value2
      * @return {string}
      *
      * @example
      *   'aa', 'bb' => 'aabb'
      *   'aa',''    => 'aa'
      *   '',  'bb'  => 'bb'
      */
      function concatenateStrings(value1, value2) {
        throw new Error('Not implemented');
      }

    Read the task description in the comment above the function. Try to understand the idea. You can see the tests prepared if you don't understand it.

  7. Write your code in src/*.js.

    Remove the throwing error line from function body:

        throw new Error('Not implemented'); 

    Implement the function by any way and verify your solution by running tests until the failed test become passed (green).

  8. Run npm test in command line. If everything is OK you can try to resolve the next task.

  9. You will see the number of passing and pending tests: 101 of passing tests is equal to 100 in score.

Submit to rs app

  1. Open rs app and login
  2. Go to submit task page
  3. Select your task (Core JS 101)
  4. Press submit button and enjoy

Notes

  • We recommend you to use nodejs of version 14 or lower. If you using any of features that does not supported by node v14, score won't be submitted.
  • Please be sure that each of your test in limit of 30sec.
  • You will get 0 (zero) if you have any eslint's errors or warnings.

FAQ

Question: I use Windows machine and have received a lot of errors like "Expected linebreaks to be 'LF' but found 'CRLF'". How to handle it?

Answer:

  • First, you need to install Gitbash properly: you need to choose option "Checkout as-is, commit as-is" in section "Configuring the line ending conversions". It'll let you download repos with line endings set "as-is" as well as commit. In other words, not to change them at all, because by default it converts them.

  • Second, install editorconfig plugin to your editor. For VS Code you can find it here: https://marketplace.visualstudio.com/items?itemName=EditorConfig.EditorConfig

    I'll let you apply some rules when you saving your files in the repo. This plugin will use config-file .editorconfig that you can see in the root folder. It lets you save the file with needed line endings, trim whitespaces, etc.

  • Finally, you need to apply linter's autofix feature in order to fix all linebreaks that was already changed to "CLRF":

$ npm run lint -- --fix

The task based on https://github.com/rolling-scopes-school/js-assignments.

core-js-101's People

Contributors

aleksei-bulgak avatar alreadybored avatar cardamo avatar dependabot[bot] avatar gpukys avatar iogsotot avatar mikhama avatar romnasi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

core-js-101's Issues

06-promises-tasks.js

Я заметил что тут неправильно сделаны тесты.

Если я все так понял - суть промисов в асинхронности, но тесты принимают синхронный код
потому что использутеся

const promises = [ Promise.resolve(1), Promise.resolve(2), Promise.resolve(3) ]

которые резолвятся тут же

Я вроде как понимаю, что из стека вызова они все равно уходят в асинхронное web API, оттуда попадают в Task Queue и уже потом возвращаются в stack.
Но тем не менее просто синхронный код через for проходит тесты. А если добавить реальной задержки промису:

const promises = [ new Promise((res) => { setTimeout(() => res(1), 1000) }), Promise.resolve(2), Promise.resolve(3) ]

вот тогда все сломается как и положено и синхронный код уже не пройдет тест

Ошибка в задании regexp

  • Valid passwords will only be alphanumeric characters (+ underscore).
    Знак подчеркивания в пароле не проходит тесты. Либо тесты надо поменять (строку 'Pa__W0rd', перенести в блок допустимых пароле), либо условие.

#3. Arrays

function getFalsyValuesCount. in the parameters of the function, the result was incorrectly specified as an array. receiving data type Number webstorm sends a warning.

wrong test description

05-regex-tasks.js - getPasswordValidator

  • Valid passwords will only be alphanumeric characters.
AssertionError [ERR_ASSERTION]: Regex matches 'Pa__W0rd'
      + expected - actual

      -false
      +true

03-arrays-tasks.js

image
image

Словил ошибку в тестах задачи getPositivesCount и запутался, потому что в выводе + expected - actual перепутаны.

isCreditCardNumber

  1. Алгоритм приведенный по ссылке https://en.wikipedia.org/wiki/Luhn_algorithm некорректен, для прохождения всех тестов отбрасывать последнюю цифру не нужно(либо должна учитываться в окончательном вычислении суммы)
  2. Следует придерживаться упрощенного алгоритма: https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9B%D1%83%D0%BD%D0%B0

Неправильный пример в файле promises task

/**

  • Return Promise object that should be resolved with array containing plain values.
  • Function receive an array of Promise objects.
  • @param {Promise[]} array
  • @return {Promise}
  • @example
  • const promises = [Promise.resolve(1), Promise.resolve(3), Promise.resolve(12)]
  • const p = processAllPromises(promises);
  • p.then((res) => {
  •  console.log(res) // => [1, 2, 3] **Здесь должен быть массив [0, 1, 2]**
    
  • })

*/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.