Skip to content

sysmaaster/JavaScripHomeWork

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 

Repository files navigation

JavaScripHomeWork



Лекция 2 >ls2


Задача 1

Перепишите код, заменив оператор if на тернарный оператор ?

var result;
if (a + b < 4) {
result = true;
} else {
result = false;
}

Задача 2

Перепишите if..else с использованием нескольких операторов ?. Для читаемости — оформляйте код в несколько строк.

var message;

if (login == 'Pitter') {
message = 'Hi';
} else if (login == 'Owner') {
message = 'Hello';
} else if (login == '') {
message = 'unknown';
} else {
message = '';
}

Задача 3

Перепишите код, заменив оператор switch на оператор if..else:

switch (val) {
case 'a':
console.log( 'a' );
break;

case 'b':
case 'c':
case 'd':
case 'e':
console.log( 'others' );
break;

default:
console.log( 'unknown' );
}

Задача 4

Перепишите код с использованием одной конструкции switch:

var a = 0;

if (a == 0) {
console.log( 0 );
}
if (a == 1) {
console.log( 1 );
}

if (a == 2 || a == 3) {
console.log( '2,3' );
}

Задача 5

Перепишите код, заменив цикл for на while, без изменения поведения цикла.

for (var i = 0; i < 3; i++) {
console.log(i);
}

Задача 6

Написать код который посчитает сумму всех элементов в масиве.

var arr = [1,2,3,4];

Внимание!

  • Не разрашается использовать специальные методы массивов.

Задача 7

Написать код который посчитает сумму всех четных элементов в массиве.

var arr = [1,2,3,4];

Внимание!

  • Не разрашается использовать специальные методы массивов.

Задача 8

Написать код который посчитает сумму всех четных элементов в массиве, в суммировании уча́ствуют только элементы больше 3.

var arr = [1,2,3,4];

Внимание!

  • Не разрашается использовать специальные методы массивов.

Задача 9

Отсортировать массив по убыванию.

var arr = [1,2,3,4,5,6];
// [6,5,4,3,2,1]

Внимание!

  • Не разрашается использовать специальные методы массивов.

Задача 10

Отсортировать массив по возрастанию.

var arr = [6,5,4,3,2,1];
// [1,2,3,4,5,6]

Внимание!

  • Не разрашается использовать специальные методы массивов.

Задача 11

Дан массив с элементами [2, 5, 9, 15, 0, 4]. С помощью цикла for и оператора if выведите на экран столбец тех элементов массива, которые больше 3-х, но меньше 10.

Внимание!

  • Не разрашается использовать специальные методы массивов.

Задача 12

Дан массив с числами: [1,2,3,-5,-2,1,-4] Найдите сумму положительных элементов массива. В результате вы должны получить число 7

Внимание!

  • Не разрашается использовать специальные методы массивов.

Задача 13

Дан массив с элементами [1, 2, 5, 9, 4, 13, 4, 10]. С помощью цикла for и оператора if проверьте есть ли в массиве элемент со значением, равным 4. Если есть — выведите на экран Есть! и выйдите из цикла. Если нет - ничего делать не надо.


Задача 14

Дано число n=1000. Делите его на 2 столько раз, пока результат деления не станет меньше 50. Какое число получится? Посчитайте количество итераций, необходимых для этого (итерация - это проход цикла), и запишите его в переменную num.



Лекция 3 >ls3


Задача 1

Напишите функцию f, которая возвращает куб числа. Число передается параметром. Данная функция должна обязательно содержать проверку входного параметра, потому что принимать она может только число.

f(2); // 8
f('Content'); // Error: parameter type is not a Number

Задача 2

Напишите функцию f которая возвращает сумму всех параметров. Количество параметров может быть любым. Данная функция должна обязательно содержать проверку входных параметров, потому что принимать она может только числа.

f(1,2,3); // 6
f(1,1,1,1,1,1,1,1); // 8
f(1,2,'s',4); // Error: all parameters type should be a Number

Задача 3

Сделайте функцию f, которая отнимает от первого числа второе и делит на третье. Данная функция должна обязательно содержать проверку входных параметров, потому что принимать она может только числа.

f(9,3,2); // 3
f('s',9,3) // Error: all parameters type should be a Number

Задача 4

Сделайте функцию f, которая принимает параметром число от 1 до 7, а затем возвращает день недели на русском языке. Данная функция должна обязательно содержать проверку входного параметра, потому что принимать она может только числа от 1 до 7.

f(1); // Воскресенье
f(2); // Понедельник
f(8); // Error: parameter should be in the range of 1 to 7
f('1'); // Error: parameter type is not a Number

Задача 5

Дан массив с числами [1, 2, -4, 3, -9, -1, 7]. Создайте из него новый массив, где останутся лежать только положительные числа [1, 2, 3, 7]. Создайте для этого вспомогательную функцию isPositive(-3), которая параметром будет принимать число и возвращать true, если число положительное, и false — если отрицательное. Данная функция должна обязательно содержать проверку входного параметра, потому что принимать она может только число.

Для добавление нового элемента в конец массива используйте метод push

// Пример использования функции isPositvie()
isPositive(-3) // вернет false
isPositive(3) // вернет true
isPositive('s') // Error: parameter type is not a Number

// Пример использования метода push
var arr = [8];
arr.push(2);
console.log(arr[1]); // выведет число 2

Задача 6

Сделайте функцию isEven(), которая параметром принимает целое число и проверяет: чётное оно или нет. Если чётное — функция возвращает true, если нечётное — false. Данная функция должна обязательно содержать проверку входного параметра, потому что принимать она может только число. Чётные числа могут делится на 2 без остатка.

isEven(3); // false
isEven(4); // true
isEven('Content'); // Error: parameter type is not a Number

Задача 7

Сделайте функцию getDivisors, которая параметром принимает число и возвращает массив его делителей (чисел, на которое делится данное число начиная от 1 и заканчивая самим собой). Данная функция должна обязательно содержать проверку входного параметра, потому что принимать она может только число больше 0.

getDivisors(12); // [1, 2, 3, 4, 6, 12]
getDivisors('Content'); // Error: parameter type is not a Number
getDivisors(0); // Error: parameter can't be a 0

Задача 8

Дан массив с числами [1, 2, 3]. Создайте функцию f, которая принимает данный массив в качестве параметров, а затем последовательно выводит на экран его элементы. Обязательно нужно использовать рекурсию. Использовать цикл запрещено. Данная функция должна обязательно содержать проверку входного параметра, потому что принимать она может только не пустой массив. Возможно вам понадобится метод splice.

f([1,2,3]);
// 1
// 2
// 3
f(1,2,3) // Error: parameter type should be an array
f('Content') // Error: parameter type should be an array
f([]) // Error: parameter can't be an empty


Лекция 4 >ls4


Задача 1

Создать имплементацию функции forEach, логика работы такая же как и у родного метода.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только массив
  • Второй параметр обязателен и может принимать только функцию
const arr = [1,2,3];
forEach(arr, function(item, i, arr) {});

Задача 2

Создать имплементацию функции filter, логика работы такая же как и у родного метода.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только массив
  • Второй параметр обязателен и может принимать только функцию
const arr = [1,2,3];
filter(arr, function(item, i, arr) {});

Задача 3

Создать имплементацию функции every, логика работы такая же как и у родного метода.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только массив
  • Второй параметр обязателен и может принимать только функцию
const arr = [1,2,3];
every(arr, function(item, i, arr) {});

Задача 4

Создать имплементацию функции some, логика работы такая же как и у родного метода.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только массив
  • Второй параметр обязателен и может принимать только функцию
const arr = [1,2,3];
some(arr, function(item, i, arr) {});

Задача 5

Создать имплементацию функции reduce, логика работы такая же как и у родного метода.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только массив
  • Второй параметр обязателен и может принимать только функцию
  • Третий параметр обязателен и может принимать только строку или число
const arr = [1,2,3];
const acc = 0;
reduce(arr, function(acc, item, i, arr) {}, acc);

Задача 6

Создать имплементацию функции reduceRight, логика работы такая же как и у родного метода.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только массив
  • Второй параметр обязателен и может принимать только функцию
  • Третий параметр обязателен и может принимать только строку или число
const arr = [1,2,3];
const acc = 0;
reduceRight(arr, function(acc, item, i, arr) {}, acc);

Задача 7

Код ниже получает из массива строк новый массив, содержащий их длины:

var arr = ['abcd', 'abcde', 'ab', 'abc'];

var arrLength = [];
for (var i = 0; i < arr.length; i++) {
arrLength[i] = arr[i].length;
}

console.log( arrLength ); // 4,5,2,3

Перепишите выделенный участок:

  • используйте вместо цикла for метод map

Задача 8

Напишите функцию f . Данная функция принимает один параметр: одноуровневый или многоуровневый массив. Возвращает данная функция сумму всех элементов на всех уровнях. Обратите внимание что функция должна возвращать число 0, если при проходе всех уровней не было найдено ни одного числа.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только массив
  • Генерировать ошибку если на каком то уровне было найдено не число и не массив
const arr = [[[1, 2], [1, 2]], [[2, 1], [1, 2]]];
f(arr); // 12
const arr2 = [[[[[1,2]]]]];
f(arr2); // 3
const arr3 = [[[[[1,2]]],2],1];
f(arr3); // 6
const arr4 = [[[[[]]]]];
f(arr4); // 0
const arr5 = [[[[[],3]]]];
f(arr5); // 3

Задача 9

Сделайте функцию arrayFill, которая будет заполнять массив заданными значениями. Первым параметром функция принимает значение, которым заполнять массив, а вторым — сколько элементов должно быть в массиве.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только число, строку, объект, массив
  • Второй параметр обязателен и может принимать только число
arrayFill('x',5); // [x,x,x,x,x]

Задача 10

Создать имплементацию функции reverse, которая принимает массив в качестве параметра, а возвращает массив только в обратном порядке.

Функция должна содержать проверки:

  • Первый параметр обязателен и может принимать только массив
  • Генерировать ошибку если был передан пустой массив
const arr = [3,2,1];
reverse(arr); // [1,2,3]


Лекция 5 >ls5


Задача 1

Напишите свою имплементацию функции bind

Принимает такие параметры:

  • Первый параметр — функция которую мы хотим привязать
  • Второй параметр — ссылка на this
  • Третий параметр до ...n — параметры для функции которую мы хотим привязать

Пример вызова:

const obj = {
getName: function(message) {
return `${message}: ${this.name}`;
}
};

const getName = obj.getName;

const f = bind(getName, {name: 'Pitter'}, 'My name');
console.log(f()); // My name: Pitter

Задача 2

Напишите свою имплементацию функции mix. Данная функция принимает неограниченное количество аргументов. Каждый аргумент по своему типу должен быть функцией иначе генерировать ошибку. Функция mix запускает свои callback функции последовательно. В качестве параметра каждый callback принимает то что возвращает предыдущий callback. Первый сallback не принимает параметров.

Пример вызова:

mix(() => {
return 0;
}, (prev) => {
return prev + 1;
}, (prev) => {
return prev * 2;
}) // 2

Задача 3

Улучшите свою имплементацию функции mix. Если на каком то из уровней callback сгенерировал ошибку → отловите ее, а затем перейдите на следующий callback. Функция mix всегда должна возвращать объект в котором будет 2 поля errors и value. Обратите внимание что value содержит результат вызовов всех функций, а errors содержит массив с информацией про все ошибки а также индекс callback где он сгенерировался.

Пример вызова:

mix(() => {
return 0;
}, (prev) => {
return prev + 1;
}, (prev) => {
throw new RangeError('Range is wrong');
}, (prev) => {
return prev * 3;
});
// Функция вернет
{
errors: [{
name: 'RangeError',
message: 'Range is wrong',
stack: 'Стек вызовов'
}],
value: 3
}

Задача 4

Написать свою имплементацию функции compose. Функция принимает неограниченное количество параметров. Каждый аргумент должен быть функцией. Каждый аргумент принимает 1 параметр. Функция compose возвращает другую функцию с одним параметром. Суть работы функции compose отображает данная формула compose(f, g)(x) = f(g(x))

Пример вызова:

compose((str) => {
return str + 'c';
}, (str) => {
return str + 'b';
})('a'); // 'abc'


Лекция 6 >ls6


-.-.-...

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published