с некоторым текстовым контентом, который получить от пользователя,
44 | // с помощью prompt, перед элементом с идентификатором t08,
45 | // когда пользователь кликает на нем
46 |
47 |
48 | // Task 10
49 | // Удалите у элемента с идентификатором t06 атрибут role
50 | // Удалите кнопку с идентификатором btn, когда пользователь кликает по ней
51 |
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
JS Fundamentals, JS-AOF, Modern JavaScript
8 |
9 |
10 |
Open Console
11 |
12 |
Promises
13 |
Create Promise
14 |
Resolve Promise
15 |
Reject Promise
16 |
17 |
18 |
Cancel Promise
19 |
20 |
DOM
21 |
22 | Task 01-03
23 |
24 |
Lorem ipsum dolor sit amet
25 |
26 | Item1
27 | Item2
28 | Item3
29 |
30 |
31 |
32 |
33 |
34 | Task 04
35 |
36 |
Lorem ipsum dolor sit amet
37 |
38 | Item1
39 | Item2
40 | Item3
41 |
42 |
Lorem ipsum dolor sit amet
43 |
44 |
45 |
Lorem ipsum dolor sit amet
46 |
47 | Item1
48 | Item2
49 | Item3
50 |
51 |
Lorem ipsum dolor sit amet
52 |
53 |
54 |
55 |
56 | Task 05
57 |
58 |
59 | 1.2
60 | 2.1
61 | 3.3
62 |
63 | 5.3
64 |
65 |
66 |
67 |
68 |
69 |
75 |
76 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/app/09.iterators.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Iterators');
2 | // Task 1
3 | // RU: Написать функцию keyValueIterable(target),
4 | // которая на вход получает объект и возвращает итерируемый объект.
5 | // Итерируемый объект позволяет получить пары ключ/значение.
6 | // Выведите в консоль цвета из объекта colors.
7 | // EN: Create a function keyValueIterable(target)
8 | // which takes an objects and returns iterable object.
9 | // Iterable object allows you to get key/value pairs.
10 | // Display in a console all colors from the object colors.
11 | // const colors = {
12 | // green: '#0e0',
13 | // orange: '#f50',
14 | // pink: '#e07'
15 | // };
16 |
17 | // const itColors = keyValueIterable(colors);
18 | // for (const [, color] of itColors) {
19 | // console.log(color);
20 | // }
21 |
22 |
23 | // Task 2
24 | // RU: В коллекции хранятся все имена пользователей, которые присоединились к определенной группе телеграмм.
25 | // Булевый флаг указывает, является ли пользователь администратором группы.
26 | // Создайте итератор, который возвращает только имена администраторов.
27 | // EN: The following collection store all the names of the user that have joined a particular telegram group.
28 | // The boolean flag indicates whether a user is an administrator of the group.
29 | // Сreatereate an iterator that returns only the administrators' names.
30 |
31 | // const users = {
32 | // anna: false,
33 | // boris: true, // admin
34 | // christina: false,
35 | // dave: false,
36 | // elena: false,
37 | // felix: true, // admin
38 | // };
39 | // [...users].forEach(name => console.log(name)); // boris, felix
40 |
41 |
42 | // Task 3
43 | // RU: Написать функцию take(sequence, amount), которая из бесконечного итерируемого объекта random
44 | // вернет указаное количество элементов.
45 | // EN: Create a function take(sequence, amount), which returns a specified amount of numbers
46 | // from iterable object random
47 |
48 | // const random = {
49 | // [Symbol.iterator]: () => ({
50 | // next: () => ({
51 | // value: Math.random()
52 | // })
53 | // })
54 | // };
55 |
56 | // const a = [...take(random, 3)];
57 | // console.log(a);
58 |
59 |
60 | // Task 4
61 | // RU: Написать итерируемый итератор, который возвращает числа Фибоначи
62 | // Реализовать метод return для остановки итератора с помощью for-of + break
63 | // EN: Create iterable iterator, which produces Fibonacci numbers
64 | // Implement method return, which allows you to stop iterator using for-of + break
65 |
66 | // for (let v of Fib) {
67 | // console.log(v);
68 | // if (v > 50) break;
69 | // }
70 |
71 |
72 | // Task 5
73 | // RU: Написать итератор для чисел, который позволит получать массивы последовательных целых элементов.
74 | // Например, [...-3] => [0, -1, -2, -3], [...3] => [0, 1, 2, 3]
75 | // EN: Create iterator for numbers, which allows you to get arrays of sequential integers.
76 | // Example, [...-3] => [0, -1, -2, -3], [...3] => [0, 1, 2, 3]
77 |
78 | // console.log([...-5]);
79 | // console.log([...5]);
80 |
--------------------------------------------------------------------------------
/app/02.strings.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Strings');
2 | // Task 01. padStart
3 | // RU: Объявите три переменных: hour, minute, second.
4 | // Присвойте им следующие значения: 4, 35, 5.
5 | // Выведите в консоль время в формате 04:35:05.
6 | // EN: Declare three variables: hour, minute, second.
7 | // Assign them the following values: 4, 35, 5.
8 | // Display the time in the format 04:35:05 in the console.
9 |
10 | // Task 02. repeat
11 | // RU: Создайте функцию, которая выведет в консоль пирамиду на 9 уровней как показано ниже
12 | // 1
13 | // 22
14 | // 333
15 | // 4444
16 | // ...
17 | // EN: Create a function which displays a 9 level pyramid in the console according to the
18 | // following pattern
19 | // 1
20 | // 22
21 | // 333
22 | // 4444
23 | // ...
24 |
25 | // Task 03. includes
26 | // RU: Напишите код, который выводит в консоль true, если строка str содержит
27 | // 'viagra' или 'XXX', а иначе false.
28 | // Тестовые данные: 'buy ViAgRA now', 'free xxxxx'
29 | // EN: Create a snippet of code which displays the value true in the console
30 | // when str contains 'viagra' or 'XXX', otherwise it displays false.
31 |
32 | // Task 04. includes + index
33 | // RU: Проверить, содержит ли строка второе вхождение подстроки,
34 | // вернуть true/false.
35 | // EN: Check whether the string contains a second occurrence of a substring,
36 | // return true / false.
37 |
38 | // Task 05. Template literal
39 | // RU: Создать строку: "ten times two totally is 20"
40 | // используя переменные:
41 | // const a = 10;
42 | // const b = 2;
43 | // и template literal
44 | // EN: Create s string "ten times two totally is 20"
45 | // using the following variables:
46 | // const a = 10;
47 | // const b = 2;
48 | // and template literal
49 |
50 | // Task 06. normalize
51 | // RU: Создайте функцию, которая сравнивает юникод строки.
52 | // Сравните две строки
53 | // var str1 = '\u006d\u0061\u00f1';
54 | // var str2 = '\u006d\u0061\u006e\u0303';
55 | // EN: Create a function that compares the unicode strings.
56 | // Compare 2 strings:
57 | // var str1 = '\u006d\u0061\u00f1';
58 | // var str2 = '\u006d\u0061\u006e\u0303';
59 |
60 | // Task 07. endsWith
61 | // RU: Создайте функцию, которая на вход получает массив имен файлов и расширение файла
62 | // и возвращает новый массив, который содержит файлы указанного расширения.
63 | // EN: Create a function that gets an array of file names and a file extension as its parameters
64 | // and returns a new array that contains the files of the specified extension.
65 |
66 | // Task 08. String.fromCodePoint
67 | // RU: Создать функцию, которая выводит в консоль строчку в формате 'символ - код'
68 | // для кодов в диапазоне 78000 - 80000.
69 | // EN: Create a function that displays a line in the format 'character - code' to the console
70 | // for codes in the range of 78000 - 80000.
71 |
72 | // Task 09
73 | // RU: Создайте функцию, которая должна выводить в консоль следующую пирамиду
74 | // Пример:
75 | // pyramid(1) = '#'
76 | //
77 | // pyramid(2) = ' # '
78 | // '###'
79 | //
80 | // pyramid(3) = ' # '
81 | // ' ### '
82 | // '#####'
83 | // EN: Create a function that should display the next pyramid in the console
84 | // Example:
85 | // pyramid(1) = '#'
86 | //
87 | // pyramid(2) = ' # '
88 | // '###'
89 | //
90 | // pyramid(3) = ' # '
91 | // ' ### '
92 | // '#####'
93 |
94 | // Task 10
95 | // RU: Создайте тег-функцию currency, которая формитирует числа до двух знаков после запятой
96 | // и добавляет знак доллара перед числом в шаблонном литерале.
97 | // EN: Create a currency tag function that forms numbers up to two decimal digits.
98 | // and adds a dollar sign before the number in the template literal.
99 |
--------------------------------------------------------------------------------
/app/07.promises.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Promises');
2 | // Task 01
3 | // Создайте промис, который постоянно находится в состоянии pending.
4 | // В конструкторе промиса выведите в консоль сообщение "Promise is created".
5 |
6 |
7 | // Task 02
8 | // Создайте промис, который после создания сразу же переходит в состояние resolve
9 | // и возвращает строку 'Promise Data'
10 | // Получите данные промиса и выведите их в консоль
11 |
12 |
13 | // Task 03
14 | // Создайте промис, который после создания сразу же переходит в состояние rejected
15 | // и возвращает строку 'Promise Error'
16 | // Получите данные промиса и выведите их в консоль
17 |
18 |
19 | // Task 04
20 | // Создайте промис, который переходит в состояние resolved через 3с.
21 | // (Используйте setTimeout)
22 | // и возвращает строку 'Promise Data'
23 | // Получите данные промиса и выведите их в консоль
24 |
25 |
26 | // Task 05
27 | // Создайте литерал объекта handlePromise со следующими свойствами:
28 | // promise, resolve, reject, onSuccess, onError
29 | // Проинициализируйте первые три свойства null,
30 | // а последние два функциями, которые принимают один параметр и выводят
31 | // в консоль сообщения: первая - `Promise is resolved with data: ${paramName}`
32 | // вторая - `Promise is rejected with error: ${paramName}`
33 | // Создайте три обработчика события click для кнопок "Create Promise", "Resolve Promise", "Reject Promise".
34 | // Первый обработчик, создает промис, заполняет первые три свойства,
35 | // описаного выше объекта: свойство promise получает новый созданный промис,
36 | // свойства resolve и reject получают ссылки на соответствующие функции
37 | // resolve и reject. Следующие два обработчика запускают методы resolve и reject.
38 |
39 |
40 | // Task 06
41 | // Используйте предыдущее задание. Продублируйте строчку с методом then
42 |
43 |
44 | // Task 07
45 | // Создайте промис, который через 1 с возвращает строку "My name is".
46 | // Создайте функцию onSuccess, которая получает один параметр,
47 | // прибавляет к нему Ваше имя и возвращает новую строку из функции
48 | // Создайте функцию print, которая выводит в консоль значение своего параметра
49 | // Добавьте два метода then и зарегистрируйте созданные функции.
50 |
51 |
52 | // Task 08
53 | // Используйте предыдущий код. Добавьте в функцию onSuccess генерацию исключения
54 | // Обработайте данное исключение, используя catch. Обратите внимание,
55 | // что метод print при этом не выполняется.
56 |
57 |
58 | // Task 09
59 | // Напишите функцию getPromiseData, которая принимает один параметр - промис. Функция получает
60 | // значение промиса и выводит его в консоль
61 | // Объявите объект со свойтвом name и значением Anna.
62 | // Создайте врапер для этого объекта и вызовите для него функцию getPromiseData
63 |
64 |
65 | // Task 10
66 | // Создайте два промиса. Первый промис возвращает объект { name: "Anna" } через 2с,
67 | // а второй промис возвращает объект {age: 16} через 3 с.
68 | // Получите результаты работы двух промисов, объедините свойства объектов
69 | // и выведите в консоль
70 |
71 |
72 | // Task 11
73 | // Используйте предыдущее задание. Пусть теперь второй промис переходит в
74 | // состояние rejected со значением "Promise Error". Измените код, чтобы обработать
75 | // эту ситуацию.
76 |
77 |
78 | // Task 12
79 | // Создайте промис, который перейдет в состояние resolve через 5с и вернет строку
80 | // 'Promise Data'.
81 | // Создайте второй промис, который перейдет в состояние rejected по клику на
82 | // кнопку "Cancel Promise". Добавьте обработчик для кнопки.
83 | // Используя метод race организуйте "отмену промиса".
84 |
85 | // Task 13
86 | // Создайте два промиса. Первый промис возвращает объект { name: "Anna" } через 2с,
87 | // Второй промис переходит в состояние rejected со значением "Promise Error".
88 | // Запустите оба эти промисы в параллель и получите результаты тех, которые завершаться успешно
89 |
90 |
91 |
92 | // Task 14
93 | // Создайте два промиса. Первый промис возвращает объект { name: "Anna" } через 2с,
94 | // Второй промис возвращает дефолтный объект { name: "Unknown" } через 1с.
95 | // Запустите оба эти промисы в параллель и получите результат того, который отработает первым
--------------------------------------------------------------------------------
/app/10.sync-generators.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Sync-Generators');
2 |
3 | // Task 1.
4 | // RU: Напишите функцию-генератор generateSequence, которая генерирует числа в диапазоне от start до end.
5 | // EN: Create function-generator generateSequence, which generates and returns numbers from start to end.
6 |
7 |
8 | // Task 2. Long Sequences
9 | // RU: Создать массив из чисел от 1 до 1000.
10 | // Реализовать функцию-генератор для формирования всех пар из этого массива.
11 | // Генератор возвращает одну пару за один раз.
12 | // Результат [1, 1], [1, 2], ..., [2, 1], [2, 2], ..., [1000, 1000]
13 | // EN: Create an array of numbers from 1 to 1000.
14 | // Implement a generator function to create all pairs from this array.
15 | // Result [1, 1], [1, 2], ..., [2, 1], [2, 2], ..., [1000, 1000]
16 |
17 |
18 | // Task 3.
19 | // RU: Реализуйте функцию генерации чисел Фибоначчи до бесконечности
20 | // EN: Implement the infinite function-generator of generating Fibonacci numbers
21 |
22 |
23 | // Task 4. yield*
24 | // RU: Реализуйте функцию-генератор, которая будет генерировать последовательность
25 | // символов от 0 до 9, затем от a до z, затем от A до Z. Воспользуйтесь функцией генератором
26 | // generateSequence, реализованой выше, String.fromCharCode(code), и диапазоном чисел от 48 до 57,
27 | // от 65 до 90 и от 97 до 122
28 | // EN: Create a function-generator that will generate a sequence
29 | // characters from 0 to 9, then from a to z, then from A to Z.
30 | // Use the function-generator generateSequence implemented above,
31 | // String.fromCharCode (code), and a range of numbers from 48 to 57,
32 | // 65 to 90 and 97 to 122
33 |
34 |
35 | // Task 5. Sync Piping
36 | // RU: Создайте-функцию генератор multipleByTwo, которая принимает массив чисел,
37 | // умножает каждое число на 2 и возвращает их по одному
38 | // Создайте-функцию генератор minusOne, которая принимает массив чисел,
39 | // отнимает 1 и возвращает их по одному
40 | // Создайте-функцию генератор isMultipleOfThree, которая принимает массив чисел,
41 | // и возвращает только те, которые делятся на 3 без остатка по одному
42 | // Объявите массив от 0 до 9
43 | // Вызовите первую функцию и передайте ей массив, результат этой функции передайте второй
44 | // а затем результат второй передайтетретей.
45 | // Примените спред оператор к резульату третей функции и создайте массив тех чисел,
46 | // которые останутся
47 | // EN: Create a function-generator multipleByTwo that takes an array of numbers,
48 | // multiplies each number by 2 and returns them one at a time
49 | // Create a function-generator minusOne that takes an array of numbers,
50 | // takes 1 and returns them one at a time
51 | // Create a function-generator isMultipleOfThree that takes an array of numbers,
52 | // and returns only those that are divided by 3 without remain part one at a time
53 | // Declare an array from 0 to 9
54 | // Call the first function and pass an array to it, pass the result of this function
55 | // to the second and then the result of the second pass to the third function.
56 | // Apply the spread operator to the result of the third function and create an array
57 | // of those numbers which will remain
58 |
59 |
60 | // Task 6. Communication with Infinite Generator
61 | // RU: Реализуйте бесконечную функцию-генератор calculation, которая будет выводить выражения
62 | // a + b = ?, где a, b будет случайно генерировать и запрашивать у пользователя ответ.
63 | // Если ответ верный, то писать в консоль true, иначе false.
64 | // Запустите код в консоли браузера
65 | // EN: Implement an infinite calculation generator-function that will output expressions
66 | // a + b = ?, where a, b will be randomly generated and request a response from the user.
67 | // If the answer is correct, then write true to the console, otherwise false.
68 |
69 |
70 | // Task 7. throw method
71 | // RU: Модифицируйте код предыдущего задания так, чтобы при вызове it.throw() генератор
72 | // не прекращал свою работу
73 | // EN: Modify the code of the previous task so that when it.throw() is called, the generator
74 | // did not stop its work
75 |
76 |
77 | // Task 8.
78 | // RU: В коллекции хранятся все имена пользователей, которые присоединились
79 | // к определенной группе телеграмм.
80 | // Булевый флаг указывает, является ли пользователь администратором группы.
81 | // Создайте генератор, который на вход получает этот объект и
82 | // возвращает только имена администраторов по одному за вызов.
83 | // EN: The collection stores all the usernames that joined
84 | // to a specific telegram group.
85 | // A boolean flag indicates whether the user is a group administrator.
86 | // Create a generator that receives this object as input
87 | // and returns only admin names.
88 |
89 | // const users = {
90 | // anna: false,
91 | // boris: true, // admin
92 | // christina: false,
93 | // dave: false,
94 | // elena: false,
95 | // felix: true, // admin
96 | // };
97 |
--------------------------------------------------------------------------------
/app/01.primitive-data-types.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Primitive Data Types');
2 |
3 | // Task 01
4 | // Объявите переменную days и проинициализируйте ее числом от 1 до 10.
5 | // Преобразуйте это число в количество секунд и выведите в консоль.
6 |
7 |
8 |
9 | // Task 02
10 | // Объявите две переменные: admin и name. Установите значение переменной name
11 | // в ваше имя. Скопируйте это значение в переменную admin и выведите его в консоль.
12 |
13 |
14 |
15 | // Task 03
16 | // Объявите три переменных: a, b, c. Присвойте им следующие значения: 10, 2, 5.
17 | // Объявите переменную result1 и вычислите сумму значений переменных a, b, c.
18 | // Объявите переменную min и вычислите минимальное значение переменных a, b, c.
19 | // Выведите результат в консоль.
20 |
21 |
22 |
23 | // Task 04
24 | // Объявите три переменных: hour, minute, second. Присвойте им следующие значения:
25 | // 10, 40, 25. Выведите в консоль время в формате 10:40:25.
26 |
27 |
28 |
29 | // Task 05
30 | // Объявите переменную minute и проинициализируйте ее целым числом.
31 | // Вычислите к какой четверти принадлежит это число и выведите в консоль.
32 |
33 |
34 |
35 | // Task 06
36 | // Объявите две переменные, которые содержат стоимость товаров:
37 | // первый товар - 0.10 USD, второй - 0.20 USD
38 | // Вычислите сумму и выведите в консоль. Используйте toFixed()
39 |
40 |
41 |
42 | // Task 07
43 | // Объявите переменную a.
44 | // Если значение переменной равно 0, выведите в консоль "True", иначе "False".
45 | // Проверьте, что будет появляться в консоли для значений 1, 0, -3.
46 |
47 |
48 |
49 | // Task 08
50 | // Объявите две переменных: a, b. Вычислите их сумму и присвойте переменной result.
51 | // Если результат больше 5, выведите его в консоль, иначе умножте его на 10
52 | // и выведите в консоль.
53 | // Данные для тестирования: 2, 5 и 3, 1.
54 |
55 |
56 |
57 | // Task 09
58 | // Объявите переменную month и проинициализируйте ее числом от 1 до 12.
59 | // Вычислите время года и выведите его в консоль.
60 |
61 |
62 |
63 | // Task 10
64 | // Выведите в консоль все числа от 1 до 10.
65 |
66 |
67 |
68 | // Task 11
69 | // Выведите в консоль все четные числа от 1 до 15.
70 |
71 |
72 |
73 | // Task 12
74 | // Нарисуйте в консоле пирамиду на 10 уровней как показано ниже
75 | // x
76 | // xx
77 | // xxx
78 | // xxxx
79 | // ...
80 |
81 |
82 |
83 | // Task 13
84 | // Нарисуйте в консоле пирамиду на 9 уровней как показано ниже
85 | // 1
86 | // 22
87 | // 333
88 | // 4444
89 | // ...
90 |
91 |
92 |
93 | // Task 14
94 | // Запросите у пользователя какое либо значение и выведите его в консоль.
95 |
96 |
97 |
98 | // Task 15
99 | // Перепишите if используя тернарный опертор
100 | // if (a + b < 4) {
101 | // result = 'Мало';
102 | // } else {
103 | // result = 'Много';
104 | // }
105 |
106 |
107 |
108 | // Task 16
109 | // Перепишите if..else используя несколько тернарных операторов.
110 | // var message;
111 | // if (login == 'Вася') {
112 | // message = 'Привет';
113 | // } else if (login == 'Директор') {
114 | // message = 'Здравствуйте';
115 | // } else if (login == '') {
116 | // message = 'Нет логина';
117 | // } else {
118 | // message = '';
119 | // }
120 |
121 |
122 |
123 | // Task 17
124 | // Замените for на while без изменения поведения цикла
125 | // for (var i = 0; i < 3; i++) {
126 | // alert( "номер " + i + "!" );
127 | // }
128 |
129 |
130 | // Task 18
131 | // Напишите цикл, который предлагает prompt ввести число, большее 100.
132 | // Если пользователь ввёл другое число – попросить ввести ещё раз, и так далее.
133 | // Цикл должен спрашивать число пока либо посетитель не введёт число,
134 | // большее 100, либо не нажмёт кнопку Cancel (ESC).
135 | // Предусматривать обработку нечисловых строк в этой задаче необязательно.
136 |
137 |
138 |
139 | // Task 19
140 | // Переписать следующий код используя switch
141 | // var a = +prompt('a?', '');
142 | // if (a == 0) {
143 | // alert( 0 );
144 | // }
145 | // if (a == 1) {
146 | // alert( 1 );
147 | // }
148 | // if (a == 2 || a == 3) {
149 | // alert( '2,3' );
150 | // }
151 |
152 |
153 | // Task 20
154 | // Объявите переменную и проинициализируйте ее строчным значением в переменном
155 | // регистре. (Например так "таООооОддОО")
156 | // Напишите код, который преобразует эту строку к виду:
157 | // первая буква в верхнем регистре, остальные буквы в нижнем регистре.
158 | // Выведите результат работы в консоль
159 | // Используйте: toUpperCase/toLowerCase, slice.
160 |
161 |
162 |
163 | // Task 21
164 | // Напишите код, который выводит в консоль true, если строка str содержит
165 | // „viagra“ или „XXX“, а иначе false.
166 | // Тестовые данные: 'buy ViAgRA now', 'free xxxxx'
167 |
168 |
169 |
170 | // Task 22
171 | // Напишите код, который проверяет длину строки str, и если она превосходит
172 | // maxlength – заменяет конец str на "...", так чтобы ее длина стала равна maxlength.
173 | // Результатом должна быть (при необходимости) усечённая строка.
174 | // Выведите строку в консоль
175 | // Тестовые данные:
176 | // "Вот, что мне хотелось бы сказать на эту тему:", 20
177 | // "Всем привет!", 20
178 |
179 |
180 |
181 | // Task 23
182 | // Напишите код, который из строки $100 получит число и выведите его в консоль.
183 |
184 |
185 | // Task 24
186 | // Напишите код, который проверит, является ли переменная промисом
187 |
188 |
189 |
--------------------------------------------------------------------------------
/app/08.async-functions.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Async Functions');
2 | // Task 01
3 | // RU: Создайте асинхронную функцию f1, используя FDS (Function Declaration Statement).
4 | // Функция должна принимать два параметра a и b и возвращать сумму a+b.
5 | // Выведите значение, которое вернет функция в консоль.
6 | // Обработаете промис и выведите значение в консоль.
7 | // EN: Create an async function f1 as a Function Declaration Statement.
8 | // The function should take two parameters a and b and return a sum a+b.
9 | // Display the result of function in the console.
10 | // Process a promise and display value in the console.
11 |
12 | // Task 02
13 | // RU: Создайте асинхронную функцию f2, используя FDE (Function Definition Expression).
14 | // Функция должна возвращать 'Promise Data', используя Promise.resolve()
15 | // Выведите значение, которое вернет функция в консоль.
16 | // Обработаете промис и выведите значение в консоль.
17 | // EN: Create an async function f2 as a Function Definition Expression.
18 | // The function should return the string 'Promise data' using Promise.resolve() method.
19 | // Display the result of function in the console.
20 | // Process a promise and display value in the console.
21 |
22 | // Task 03
23 | // RU: Создайте класс C1. Добавьте асинхронный метод f3.
24 | // Метод должен генерить исключение 'Error occurs in f3 method'.
25 | // Создайте экземпляр класса и вызовите метод f3.
26 | // Обработаете промис.
27 | // EN: Create a class C1. Add async method f3.
28 | // Method should throw an exception 'Error occurs in f3 method'.
29 | // Create an instance of the class and call the method f3.
30 | // Process a promise and display value in the console.
31 |
32 | // Task 04
33 | // RU: Cоздайте функцию makeRequest, используя FDS (Function Declaration Statement).
34 | // Функция должна принимать один параметр - url и возвращать промис,
35 | // который перейдет в состояние resolved через 2с. и вернет значение параметра.
36 | // Первой строкой в функции выведите сообщение 'makeRequest is called'.
37 | // Cоздайте функцию f4, используя FDS (Function Declaration Statement).
38 | // Функция должна вызвать функцию makeRequest, получить результат ее работы и вывести в консоль.
39 | // EN: Create a functiom makeRequest as a Function Declaration Statement.
40 | // The function should take one parameter - url and return a promise,
41 | // which should be resolved after 2s and it should return the value of the parameter url.
42 | // The first line of code in the function should display message 'makeRequest is called' in the console.
43 | // Create a function f4 as a Function Declaration Statement.
44 | // The function f4 should call the function makeRequest, get its result and display it in the console.
45 |
46 | // Task 05
47 | // RU: Внесите изменения в функцию f4 из предыдущего задания так, чтобы в консоле появилось
48 | // значение переданого параметра в функцию makeRequest.
49 | // EN: Make changes to the function f4 from the previous task. This function should display the value
50 | // of the parameter of the function makeRequest in the console.
51 |
52 | // Task 06
53 | // RU: Cоздайте асинхронную функцию f6, используя FDS (Function Declaration Statement).
54 | // Функция должна вызвать два раза функцию makeRequest с разными значениями параметра.
55 | // Перед вызовом и после каждого вызова makeRequest функция должна выводить в консоль любое сообщение.
56 | // Создать и вернуть массив, который должен содержать значения переданые функции makeRequest.
57 | // Обработаете результат работы функции f6.
58 | // EN: Create an async function f6 as a Function Declaration Statement.
59 | // This function should call the function makeRequest two times with different values of its parameter.
60 | // The function f6 should display any message in the console before and after each call
61 | // of the function makeRequest.
62 | // Create and return the array from the function f6, which should contains the values of the
63 | // parameter of the function makeRequest.
64 | // Process the result of the function f6.
65 |
66 | // Task 07
67 | // RU: Измените асинхронную функцию f6 из предыдущего задания так, чтобы вызовы функции
68 | // makeRequest выполнялись паралельно.
69 | // EN: Make changes to the async function f6 from the previous task. This function should
70 | // call the function makeRequest with different values of its parameter simultaneously.
71 |
72 | // Task 08
73 | // RU: Создайте масив урлов ['http://a', 'http://b'].
74 | // Создайте функцию sendRequest, которая принимает один параметр - url.
75 | // Функция в первой строке должна выводить в консоль сообщение 'sendRequest is called'
76 | // и возвращать через 2 с для первого урла объект { name: 'Ann' }, а для второго
77 | // урла объект { age: 16 }.
78 | // Создайте асинхронную функцию f8 которая должна вызвать функцию sendRequest для каждого урла
79 | // и вернуть объект {name: 'Ann', age: 16}
80 | // Обработайте результат работы функции f8
81 | // EN: Create the array of urls ['http://a', 'http://b'].
82 | // Create the function sendRequest which should take one parameter - url.
83 | // The function should display the message 'sendRequest is called' in the console
84 | // in its first line of code. Then the function should return the object { name: 'Ann' } for the
85 | // first url after 2s and the object { age: 16 } for the second url after 2s.
86 | // Create the async function f8, which should call the function sendRequest with each value
87 | // from the array and return the object {name: 'Ann', age: 16}.
88 | // Process the reuslt of the function f8
89 |
--------------------------------------------------------------------------------
/app/04.objects.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Objects');
2 |
3 | // Task 01
4 | // RU: Создать функцию-конструктор Tune(title, artist) для создания объектов
5 | // с публичными свойствами title, artist и методом concat().
6 | // Метод должен возвращать конкатенацию значений свойств title и artist.
7 | // Создать несколько объектов. Вызвать их метод concat().
8 | // EN: Create function-constructor Tune(title, artist) for creating objects
9 | // with public properties title, artist and method concat().
10 | // Method should return the concatenation of values of properties title and artist.
11 | // Create a few objects. Call their method concat().
12 |
13 | // Task 02
14 | // RU: Создать функцию-конструктор Tune(title, artist) для создания объектов
15 | // с приватными свойствами title, artist и публичным методом concat().
16 | // Метод должен возвращать конкатенацию значений свойств title и artist.
17 | // Создать несколько объектов. Вызвать их метод concat().
18 | // EN: Create function-constructor Tune(title, artist) for creating objects
19 | // with private properties title, artist and method concat().
20 | // Method should return the concatenation of values of properties title and artist.
21 | // Create a few objects. Call their method concat().
22 |
23 | // Task 03
24 | // RU: Расширить прототип объекта String методом exclaim() если его нет в прототипе.
25 | // Метод должен добавлять знак восклицания к строке и выводить ее в консоль.
26 | // EN: Extend the prototype of object String with the method exclaim(), if it doesn't exist.
27 | // Method should add exclaimation mark to the string and display it in the console.
28 |
29 | // Task 04
30 | // RU: Создать функцию-конструктор Book(title, author).
31 | // Добавить два метода: getTitle, getAuthor.
32 | // Создать функцию-конструктор TechBook(title, author, category).
33 | // Передать значения title, author функции-конструктору Book.
34 | // Добавить два метода: getCategory, getBook – возвращает строку со значениями параметров.
35 | // Для реализации наследования используйте:
36 | // 1. Object.create()
37 | // 2. Class
38 | // EN: Create function-constructor Book(title, author).
39 | // Add two methods: getTitle, getAuthor.
40 | // Create function-constructor TechBook(title, author, category).
41 | // Pass the value of title, author to the function-constructor Book.
42 | // Add two methods: getCategory, getBook - returns the string with values of all parameters.
43 | // Implement inheritance using:
44 | // 1. Object.create()
45 | // 2. Class
46 |
47 | // Task 05
48 | // RU: Создайте класс Shape со статическим свойством count.
49 | // Проинициализируйте это свойство 0.
50 | // В конструкторе класса увеличивайте count на 1.
51 | // Создайте производный класс Rectangle. Добавьте метод для подсчета площади.
52 | // Создайте несколько объектов. Выведите в консоль количество созданных объектов.
53 | // EN: Create class Shape with static property count.
54 | // Initialize the property count with 0.
55 | // Increment the value of count by 1 in the constructor.
56 | // Create derived class Rectangle. Add method to calculate area.
57 | // Create a few objects. Display the number of created objects in the console.
58 |
59 | // Task 06
60 | // RU: Создать функцию-конструктор Person() для конструирования объектов.
61 | // Добавить два метода: setFirstName() и setLastName().
62 | // Методы должны вызываться в цепочке, например obj.setFirstName(...).setLastName(...)
63 | // EN: Create function-constructor Person() for creating objects.
64 | // Add two methods: setFirstName() и setLastName().
65 | // These methods should be called in chain like this obj.setFirstName(...).setLastName(...)
66 |
67 | // Task 07
68 | // RU: Cоздать объект data и сконфигурирвать его свойства:
69 | // 1. id: значение = 1, изменяемое.
70 | // 2. type: значение = 'primary', перечисляемое
71 | // 3. category: getter возвращает значение поля _category,
72 | // setter устанавливает значение поля _category, перечисляемое, конфигурируемое.
73 | // Используя for-in вывести свойства объекта в консоль
74 | // EN: Create an object data and configure its properties:
75 | // 1. id: value = 1, writable
76 | // 2. type: value = 'primary', enumerable
77 | // 3. category: getter returns the value of the property _category,
78 | // setter sets the value if the property _category, enumerable, configurable.
79 | // Using for-in display properties of an object in the console.
80 |
81 | // Task 08
82 | // RU: Создать литерал объекта с двумя свойствами. Запретить расширять объект.
83 | // EN: Create object literal with two properties. Deny extend the object.
84 |
85 | // Task 09 TodoList Application
86 | // RU: Создать классы 'задача' и 'список задач' со следющим функционалом:
87 | // 1. Добавить задачу в список
88 | // 2. Получить и вывести в консоль список всех задач
89 | // в формате "[new] Task 1", "[completed] Task2"
90 | // 3. Отметить указанную задачу как выполненную
91 | // 4. Удалить задачу из списка
92 | // 5. Отсортировать задачи по алфавиту по возрастанию или по убыванию
93 | // 6. Очистить список задач
94 | // EN: Create classes 'task' and 'task list' with the following features:
95 | // 1. Add task to the list
96 | // 2. Get and display the list of all tasks in the console
97 | // using the following format "[new] Task 1", "[completed] Task2"
98 | // 3. Check task as a completed task
99 | // 4. Remove task from the list of tasks.
100 | // 5. Sort tasks alphabetically in asc or desc order
101 | // 6. Clear the list of tasks.
102 |
103 | // Task 10 Transform Array into Map (Maksym Koval1
)
104 | // RU: Преобразовать массив в меп по образцу
105 | // EN: Transform array into map according to pattern
106 | // const entries = [
107 | // { key:'FIRST_KEY', value: 'FIRST_KEY_VALUE'},
108 | // { key:'FIRST_KEY', value: 'FIRST_KEY_NOT_SAME_VALUE'},
109 | // { key:'SECOND_KEY', value:'value1'},
110 | // { key:'SECOND_KEY', value:'value4'},
111 | // { key:'THIRD_KEY', value: 'value6'},
112 | // { key:'FOURTH_KEY', value:'value1'},
113 | // ];
114 |
115 | // ==>
116 |
117 | // Map {
118 | // 'FIRST_KEY': ['FIRST_KEY_VALUE', 'FIRST_KEY_NOT_SAME_VALUE'],
119 | // 'SECOND_KEY': ['value1', 'value4'],
120 | // 'THIRD_KEY': 'value6',
121 | // 'FOURTH_KEY': 'value1'
122 | // }
123 |
--------------------------------------------------------------------------------
/app/03.arrays.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Arrays');
2 |
3 | // Task 01
4 | // RU: Создать массив. Получить последний элемент массива.
5 | // 1. Без удаления этого элемента из массива.
6 | // 2. С удалением этого элемента из массива
7 | // Выведите массивы в консоль
8 | // EN: Create an array of any elements. Get the last element from this array.
9 | // 1. without deleting this element from an array;
10 | // 2. with deleting this element from an array.
11 | // Display them in the console.
12 |
13 | // Task 02
14 | // RU: Создать массив любых элементов. Добавить элемент в конец массива.
15 | // 1. Модифицировать текущий массив
16 | // 2. Создать новый массив
17 | // Выведите массивы в консоль
18 | // EN: Create an array of any elements. Add new element to the end of this array.
19 | // 1. mutate current array;
20 | // 2. create a new array.
21 | // Display them in the console.
22 |
23 | // Task 03
24 | // RU: Создать массив любых элементов. Вставить новый элемент под индексом 3.
25 | // 1. Модифицировать текущий массив
26 | // 2. Создать новый массив
27 | // Выведите массивы в консоль
28 | // EN: Create an array of any elements. Insert a new element with index 3.
29 | // 1. mutate current array;
30 | // 2. create a new array.
31 | // Display them in the console.
32 |
33 | // Task 04
34 | // RU: Создать массив чисел в диапазоне от 0 до 100.
35 | // Подсчитать и вывети сумму тех элементов, которые больше 50.
36 | // EN: Create an array of numbers in the range from 0 to 100.
37 | // Calculate and display the sum of the elements, which are greater than 50.
38 |
39 | // Task 05
40 | // RU: Создать массив строк. На основе этого массива создать строку –
41 | // объдинить все элементы массива, используя определенный разделитель.
42 | // EN: Create an array of strings. Create a string on the basis of this array.
43 | // This string should contain all elements from an array separated by certain delimeter.
44 |
45 | // Task 06
46 | // RU: Создать массив чисел от 1 до 20 в случайном порядке.
47 | // Отcортировать массив по возрастанию. Вывести его в консоль.
48 | // Получить массив, отсортрованный в обратном порядке, и вывести его в консоль.
49 | // EN: Create an array of numbers in the range from 1 to 20 in random order.
50 | // Sort this array in ascending order. Display it in the console.
51 | // Create a copy of the previous array in reverse order. Display it in the console.
52 |
53 | // Task 07
54 | // RU: Создать массив [3, 0, -1, 12, -2, -4, 100_001, 0, 7, 2]
55 | // На его основе создать новый массив [-1, -2, -4, 0, 0, 3, 12, 100_001, 7, 2].
56 | // первая часть - отрицательные числа в том же порядке
57 | // вторая часть - нули
58 | // третья часть - положительные числа в том же порядке.
59 | // EN: Create the array: [3, 0, -1, 12, -2, -4, 100_001, 0, 7, 2]
60 | // Use this array and create new one: [-1, -2, -4, 0, 0, 3, 12, 100_001, 7, 2].
61 | // First part - negative values from the original array in the same order,
62 | // Next part - zeroes
63 | // Last part - positive values from the original array in the same order.
64 |
65 | // Task 08
66 | // RU: 1. Создайте массив styles с элементами "Jazz", "Blues".
67 | // 2. Добавьте в конец значение "Rock-n-Roll".
68 | // 3. Замените предпоследнее значение с конца на "Classics".
69 | // 4. Удалите первый элемент из массива и выведите его в консоль.
70 | // 5. Добавьте в начало два элемента со значениями "Rap" и "Reggae".
71 | // 6. Выведите массив в консоль.
72 | // EN: 1. Create an array styles with two elements "Jazz", "Blues".
73 | // 2. Add new element "Rock-n-Roll" to the end of the array.
74 | // 3. Replace the last but one element with new value "Classics".
75 | // 4. Remove the first element from the array and display it in the console.
76 | // 5. Add two new elements "Rap" and "Reggae" at the begining of the array.
77 | // 6. Display an array in the console.
78 |
79 | // Task 09
80 | // RU: Подсчитать в строке "dskjdhfkjshdfkjhsdkjureyteiruyiqywehjkh"
81 | // отдельно количество букв r, k, t и вывести в консоль.
82 | // EN: Calculate the number of letters r, k, t in this string
83 | // "dskjdhfkjshdfkjhsdkjureyteiruyiqywehjkh" and display them in the console.
84 |
85 | // Task 10. Aleh Hupalo
86 | // RU: Создать строку содержащую буквы и цифры.
87 | // Получить максимальное число, состоящее из цифр, существующих в созданной строке.
88 | // Тестовые данные:
89 | // - 'sd231gt04' -> 43210
90 | // - '00HT00jtr' -> 0
91 | // EN: Create a string containing letters and digits.
92 | // Get the maximum number consisting of digits existing in the created string.
93 | // Test data:
94 | // - 'sd231gt04' -> 43210
95 | // - '00HT00jtr' -> 0
96 |
97 |
98 | // Task 11. (Maksym Koval1 )
99 | // RU: Есть строка, представляющая rgb цвет, например 'rgb(255, 255, 78)'.
100 | // Необходимо извлечь из строки номера цветов и вывести их в консоль через разделитель "-".
101 | // EN: There is a string representing the rgb color, for example 'rgb(255, 255, 78)'.
102 | // It is necessary to extract the numbers of colors from the string and output
103 | // them to the console through the "-" separator.
104 |
105 |
106 | // Task 12
107 | // RU: Создать массив любых элементов.
108 | // Получить случайный элемент из массива и вывести его в консоль.
109 | // EN: Create an array of any elements.
110 | // Get the random element from this array and display it in the console.
111 |
112 | // Task 13
113 | // RU: Создать двумерный массив:
114 | // 1 2 3
115 | // 4 5 6
116 | // 7 8 9
117 | // Вывести его в консоль.
118 | // Преобразовать массив из предыдущего задания в одномерный.
119 | // Вывести его в консоль
120 | // EN: Create two-dementional array:
121 | // 1 2 3
122 | // 4 5 6
123 | // 7 8 9
124 | // Display it in the console.
125 | // Transform an array from two-dementional into one-dementional array.
126 | // Display it in the console.
127 |
128 | // Task 14
129 | // RU: Создать массив любых элементов.
130 | // Найти индекс указаного элемента в массиве и вывести его в консоль.
131 | // EN: Create an array of any elements.
132 | // Find the index of a particular element in the array and display it in the console.
133 |
134 | // Task 15
135 | // RU: Создать массив с дублями элементов. На его основе создать новый массив
136 | // уникальных элементов (удалить дубли).
137 | // Вывести новый массив в консоль.
138 | // EN: Create an array with duplicate elements. Create new one on the basis of the originl array.
139 | // Remove duplicated elements.
140 | // Display it in the console.
141 |
142 | // Task 16
143 | // RU: Создать массив с дублями. Найти первый элемент, который дублируется.
144 | // Заменить этот элемент и все его копии на символ '*'.
145 | // Вывести массив в консоль.
146 | // EN: Create an array with duplicate elements. Find first duplicated element.
147 | // Replace this element and all its copies with symbol '*'.
148 | // Display it in the console.
149 |
150 | // Task 17
151 | // RU: Создать массив целых чисел. На его основе создать массивы – представления
152 | // этих же чисел в бинарном, восьмеричном и шестнадцатеричном виде.
153 | // Вывести эти массивы в консоль.
154 | // EN: Create an array of integer numbers. Create 3 new ones on the basis of the originl array.
155 | // First array contains the binary representation of the elements from the original array.
156 | // Second array contains the octal representation of the elements from the original array.
157 | // Third array contains the hexadecimal representation of the elements from the original array.
158 | // Display them in the console.
159 |
160 | // Task 18
161 | // RU: Получить из строки 'a big brown fox jumps over the lazy dog' массив слов,
162 | // который содержит элементы, длина которых не больше 3 символа.
163 | // Вывести массив в консоль.
164 | // EN: Get the array of words from the string 'a big brown fox jumps over the lazy dog'.
165 | // This array should contain only words, the length of which is 3 or less characters.
166 | // Display it in the console.
167 |
168 | // Task 19
169 | // RU: Создать массив, который содержит строки и числа.
170 | // Проверить, содержит ли массив только строки.
171 | // Вывети результат в консоль
172 | // EN: Create an array of numbers and strings.
173 | // Check whether this array contains only strings.
174 | // Display the result in the console.
175 |
176 | // Task 20
177 | // RU: Создать отсортированный массив чисел.
178 | // Реализовать функцию binarySearch(arr, value), которая принимает массив
179 | // и значение и возвращает индекс значения в массиве или -1.
180 | // Функция должна использовать бинарный поиск.
181 | // Вывести результат в консоль.
182 | // EN: Create an array of numbers in sort order.
183 | // Implement function binarySearch(arr, value), which takes an array
184 | // and a value and returns the index of this value in the array or -1.
185 | // Function should use binary search.
186 | // Display the result in the console.
187 |
188 |
--------------------------------------------------------------------------------
/app/06.functions.js:
--------------------------------------------------------------------------------
1 | console.log('Topic: Functions');
2 |
3 | // Task 1. FDS
4 | // RU: Создайте функцию conc, которая должна конкатенировать значения
5 | // двух параметров a и b и возвращать строку.
6 | // Используйте Function Declaration Statement (FDS).
7 | // Вызовите функцию до ее объявления.
8 | // Тестовые данные:
9 | // a = '1', b = '1', result = '11'
10 | // a = 1, b = 1, result = '11'
11 | // EN: Create a function conc, which should concatenate the values
12 | // of two parameters a and b and return a string.
13 | // Use Function Declaration Statement (FDS).
14 | // Call a function before it declaration.
15 | // Test data:
16 | // a = '1', b = '1', result = '11'
17 | // a = 1, b = 1, result = '11'
18 |
19 | // Task 2. FDE
20 | // RU: Создайте функцию comp, которая должна сравнивать значения
21 | // двух параметров a и b и возвращать 1, если они равны и -1, если они не равны.
22 | // Используйте Function Definition Expression (FDE).
23 | // Вызовите функцию до ее объявления.
24 | // Тестовые данные:
25 | // a = 'abc', b = 'abc', result = 1
26 | // a = 'abC', b = 'abc', result = -1
27 | // EN: Create a function comp, which should compare the values
28 | // of two parameters a and b, and return 1, when they equal and return -1,
29 | // when they are not equal.
30 | // Use Function Definition Expression (FDE).
31 | // Call a function before it declaration.
32 | // Test data:
33 | // a = 'abc', b = 'abc', result = 1
34 | // a = 'abC', b = 'abc', result = -1
35 |
36 | // Task 3. AF
37 | // RU: Создайте анонимную функцию, которая должна
38 | // выводить сообщение 'message in console' в коноль.
39 | // Используйте ее как обработчик события click для кнопки.
40 | // EN: Create an anonymous function, which should display
41 | // message 'message in console' in console.
42 | // Use it as an event handler of event click of the button.
43 |
44 | // Task 4. NFE
45 | // RU: Создайте функцию fibo, которая должна вычислять числа Фибоначчи по формуле
46 | // F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2.
47 | // Создайте функцию factorial, которая должна вычислять факториал числа по формуле
48 | // Fn = 1 * 2 *..*n.
49 | // Используйте Named Function Expression (NFE).
50 | // EN: Create a function fibo should calculate Fibonacci numbers according to the formula
51 | // F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2.
52 | // Create a function factorial which should calculate factorial of a number n
53 | // according to the formula Fn = 1 * 2 *..*n.
54 | // Use Named Function Expression (NFE).
55 |
56 | // Task 5. FC
57 | // RU: Объявите две строчные переменные: params и body и проинициализируйте
58 | // их строчными значениями, которые представляют список параметров и тело будущей функции.
59 | // Создайте функцию, используя эту информацию с помощью Function Constructor (FC).
60 | // Вызовите эту функцию.
61 | // EN: Declare two string variables: params and body and initialize them with string values,
62 | // which represent the list of parameters and the body of future function.
63 | // Create function using these variables with help of Function Constructor (FC).
64 | // Call this function.
65 |
66 | // Task 6. ArF
67 | // RU: Объявите массив arr = [1, 8, 3, 5, 12, 7, 9, 11]
68 | // Используя стрелочные функции создайте новый массив из элементов elem * elem,
69 | // которые меньше 100 и отсортируйте его по возрастанию.
70 | // Выведите результат в консоль.
71 | // EN: Declare an array arr = [1, 8, 3, 5, 12, 7, 9, 11]
72 | // Using arrow functions create new array which contains elem * elem.
73 | // These elements should be less than 100, sort it in ascending order.
74 | // Display the result in the console.
75 |
76 | // Task 7. IIFE
77 | // RU: Создайте конструкцию, с помощью которой выполниться выше реализованная
78 | // функция conc.
79 | // EN: Create a construction which allows to run the above function conc.
80 |
81 | // Task 8. Arguments Object, Rest
82 | // RU: Создайте функцию parts, которая принимает неизвестное количество параметров.
83 | // Каждый параметр – это группа предложений.
84 | // Функция должна вырезать из параметра подстроку, начиная с символа двоеточие (:)
85 | // и заканчивая символом точка (.).
86 | // Функция должна возвращать массив подстрок.
87 | // Используйте Function Definition Expression (FDE).
88 | // Тестовые данные:
89 | // param1 = "This is the first sentence. This is a sentence with a list of items:
90 | // cherries, oranges, apples, bananas."
91 | // param2 = "This is the second sentence. This is a sentence with a list of items:
92 | // red, blue, yellow, black."
93 | // result = ["cherries, oranges, apples, bananas", "red, blue, yellow, black"].
94 | // EN: Create a function parts, which takes unknown quantity of parameters.
95 | // Each parameter is a group of sentances.
96 | // The function should cut out the substring from the parameter, starting with the colon (:)
97 | // and ending with a period (.) character.
98 | // The function should return an array of substrings.
99 | // Use Function Definition Expression (FDE).
100 | // Test Data:
101 | // param1 = "This is the first sentence. This is a sentence with a list of items:
102 | // cherries, oranges, apples, bananas."
103 | // param2 = "This is the second sentence. This is a sentence with a list of items:
104 | // red, blue, yellow, black."
105 | // result = ["cherries, oranges, apples, bananas", "red, blue, yellow, black"].
106 |
107 |
108 | // Task 9. Optional Arguments
109 | // RU: Создайте функцию find(testString, test), которая должна возвращать позицию
110 | // строки test в строке testString.
111 | // Если второй параметр не задан, используйте test = testString.
112 | // Используйте Function Definition Expression (FDE).
113 | // Тестовые данные:
114 | // testString = 'abc', test ='b', result = 1
115 | // testString = 'abc', result = 0
116 | // testString = 'abc', test = 'd', result = -1
117 | // testString = 'abc', test='a', test2='b', result = 0
118 | // EN: Create a function find(testString, test), which should return the position
119 | // of test string within testString.
120 | // If the second parameter is omitted, use default value test = testString.
121 | // Use Function Definition Expression (FDE).
122 | // Test Data:
123 | // testString = 'abc', test ='b', result = 1
124 | // testString = 'abc', result = 0
125 | // testString = 'abc', test = 'd', result = -1
126 | // testString = 'abc', test='a', test2='b', result = 0
127 |
128 | // Task 10. Function as an Object
129 | // RU: Создайте функцию str(), которая принимает один строчный параметр и
130 | // выводит в консоль 'String is non empty', если параметр - непустая строка и
131 | // 'String is empty', если параметр – пустая строка.
132 | // Создайте функцию str.isNonEmptyStr(), как свойство функции str. Эта функция должна
133 | // принимать один параметр и возвращать true, если параметр непустая строка,
134 | // иначе false. Используйте эту функцию для реализации условия в основной функции.
135 | // Тестовые данные:
136 | // str.isNonEmptyStr(), result = false
137 | // str.isNonEmptyStr(''), result = false
138 | // str.isNonEmptyStr('a'), result = true
139 | // str.isNonEmptyStr(1), result = false
140 | // str(), console.log('String is empty')
141 | // str('a'), console.log('String is non empty')
142 | // EN: Create a function str(), which takes one string parameter and display in the console
143 | // string 'String is non empty' if the paramer is not empty string, otherwise it
144 | // should display 'String is empty'.
145 | // Create a function str.isNonEmptyStr() as a property of function str. This function
146 | // should take one parameter and return true, when the value of parameter is not empty
147 | // string, otherwise it should return false. Use this function to implement if statement
148 | // in the str() funtion.
149 | // Test Data:
150 | // str.isNonEmptyStr(), result = false
151 | // str.isNonEmptyStr(''), result = false
152 | // str.isNonEmptyStr('a'), result = true
153 | // str.isNonEmptyStr(1), result = false
154 | // str(), console.log('String is empty')
155 | // str('a'), console.log('String is non empty')
156 |
157 | // Task 11. Function as a Parameter
158 | // RU: Создайте функцию toConsole с одним параметром. Функция должна выводить
159 | // значение параметра в консоль.
160 | // Создайте функцию toAlert с одним параметром. Функция должна выводить значение
161 | // параметра используя alert().
162 | // Создайте функцию splitToWords с двумя параметрами: msg и callback.
163 | // Функция должна разделять строку на слова и использовать колбек для отображения слов.
164 | // Если второй параметр не задан, функция должна возвращать массив слов.
165 | // EN: Create a function toConsole with one parameter. The function should display
166 | // the value of the parameter in the console.
167 | // Create a function toAlert with one parameter. The function should display
168 | // the value of the parameter using alert.
169 | // Create a function splitToWords, which takes two parameters: msg и callback.
170 | // The function should split the value of parameter msg by the words and use callback
171 | // to display these words.
172 | // If the second parameter is omitted, the function should return array of words.
173 | // Test Data:
174 | // splitToWords("My very long text msg", toConsole);
175 | // result:
176 | // My
177 | // very
178 | // long
179 | // text
180 | // msg
181 | // splitToWords("My very long text msg", toAlert);
182 | // result = alert(My), ….
183 | // console.log( splitToWords("My very long text msg") );
184 | // result = ['My', 'very', 'long', 'text', 'msg']
185 |
186 |
187 | // Task 12. Function as a Result
188 | // RU: Создайте функцию copyright, которая должна возвращать другую функцию с
189 | // одним параметром. Возращаемая функция должна прибавлять знак © ('\u00A9')
190 | // вначале своего параметра и возвращать результат. Объявите этот знак в функции copyright.
191 | // Тестовые данные:
192 | // console.log( copyright()('EPAM') ); result = © EPAM.
193 | // EN: Create a function copyright, which should return another function with one parameter.
194 | // This returned function should prepend sign © ('\u00A9') to its parameter and
195 | // return the result. Declare the sign © ('\u00A9') inside copyright function.
196 | // Test Data:
197 | // console.log( copyright()('EPAM') ); result = © EPAM.
198 |
199 | // Task 13. Function as a Result
200 | // RU: Задание аналогично предыдущему, но в этот раз функция copyright получает знак
201 | // как свой параметр.
202 | // EN: This task is similar to the previous one, but in this case the function copyright takes
203 | // one parameter - sign (© ('\u00A9')).
204 |
205 | // Task 14. Function as a Method
206 | // RU: Создайте литерал объекта employee со следующими свойствами:
207 | // name: 'Ann',
208 | // work – функция, которая выводит в консоль сообщение "I am Ann. I am working..."
209 | // Тестовые данные
210 | // employee.work() результат в консоле "I am Ann. I am working..."
211 | // EN: Create an object literal employee with the following properties:
212 | // name: 'Ann',
213 | // work – function, which displays in the console the following string
214 | // "I am Ann. I am working..."
215 | // Test Data:
216 | // employee.work() result in the console "I am Ann. I am working..."
217 |
218 | // Task 15. Borrow Method
219 | // RU: Создайте литерал объекта person со свойством name.
220 | // Вызовите метод work объекта employee из предыдущего задания.
221 | // EN: Create an object literal person with property name.
222 | // Call the method work of the object employee from the previous task.
223 |
224 | // Task 16. Memoization
225 | // RU: Создать функцию fiboMemo для вычисления чисел Фибоначчи по формуле
226 | // F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2. Функция должна хранить те значения,
227 | // которые она уже вычисляла. Используя методы console.time(), console.timeEnd()
228 | // определите время вычисления функции fibo и функции fiboMemo.
229 | // EN: Create a function fiboMemo for calculating Fibonacci numbers according to the formula
230 | // F0 = 0, F1 = 1, Fn = Fn-1 + Fn-2. The function should store the values computed earlier.
231 | // Using methods console.time(), console.timeEnd() calculate the time for function fibo
232 | // and fiboMemo.
233 |
--------------------------------------------------------------------------------