# Неделя #2 Объекты и массивы. Обработка ошибок
# Подготовка к выполнению задания
Изучить все материалы второй недели курса в Личном кабинете.
# Что нужно сделать?
# Выполнить домашнее задание #2 (Работа с массивами и объектами)
- Скачайте архив с домашним заданием №2
- Разархивируйте архив и скопируйте папку с ДЗ в сборку
- Приступаем к выполнению ДЗ №2
- Задание 2.1:
- Напишите аналог встроенного метода forEach для работы с массивами
- Посмотрите как работает forEach и повторите это поведение для массива, который будет передан в параметре array
Пример:
forEach([1, 2, 3], (el) => console.log(el))
Задание 2.2:
- Напишите аналог встроенного метода map для работы с массивами
- Посмотрите как работает map и повторите это поведение для массива, который будет передан в параметре array
Пример:
map([1, 2, 3], (el) => el ** 2) // [1, 4, 9]
Задание 2.3:
- Напишите аналог встроенного метода reduce для работы с массивами
- Посмотрите как работает reduce и повторите это поведение для массива, который будет передан в параметре array
Пример:
reduce([1, 2, 3], (all, current) => all + current) // 6
Задание 2.4:
- Функция должна перебрать все свойства объекта, преобразовать их имена в верхний регистр и вернуть в виде массива
Пример:
upperProps({ name: 'Сергей', lastName: 'Петров' }) вернет ['NAME', 'LASTNAME']
Задание 2.5:*
- Функция принимает объект и должна вернуть Proxy для этого объекта
- Proxy должен перехватывать все попытки записи значений свойств и возводить это значение в квадрат
Пример:
const obj = createProxy({});
obj.foo = 2;
console.log(obj.foo); // 4
- Запустить тесты и убедиться, что они прошли.
- Сделайте коммит и пуш изменений.
- Создайте пулл реквест и отправьте его на проверку наставнику.
# Выполнить домашнее задание #3 (Работа с исключениями и отладчиком)
- Скачайте архив с домашним заданием №3
- Разархивируйте архив и скопируйте папку с ДЗ в сборку .
- Приступаем к выполнению ДЗ №3.
- Задание 3.1:
3.1.1:
- Функция принимает массив и фильтрующую функцию и должна вернуть true или false
- Функция должна вернуть true только если fn вернула true для всех элементов массива
3.1.2: Необходимо выбрасывать исключение в случаях:
- array не массив или пустой массив (с текстом "empty array")
- fn не является функцией (с текстом "fn is not a function")
Запрещено использовать встроенные методы для работы с массивами
Пример:
isAllTrue([1, 2, 3, 4, 5], n => n < 10) // вернет true
isAllTrue([100, 2, 3, 4, 5], n => n < 10) // вернет false
Задание 3.2:
3.2.1:
- Функция принимает массив и фильтрующую функцию и должна вернуть true или false
- Функция должна вернуть true если fn вернула true хотя бы для одного из элементов массива
3.2.2: Необходимо выбрасывать исключение в случаях:
- array не массив или пустой массив (с текстом "empty array")
- fn не является функцией (с текстом "fn is not a function")
Запрещено использовать встроенные методы для работы с массивами
Пример:
isSomeTrue([1, 2, 30, 4, 5], n => n > 20) // вернет true
isSomeTrue([1, 2, 3, 4, 5], n => n > 20) // вернет false
Задание 3.3:
3.3.1:
- Функция принимает заранее неизвестное количество аргументов, первым из которых является функция fn
- Функция должна поочередно запустить fn для каждого переданного аргумента (кроме самой fn)
3.3.2: Функция должна вернуть массив аргументов, для которых fn выбросила исключение
3.3.3: Необходимо выбрасывать исключение в случаях:
- fn не является функцией (с текстом "fn is not a function")
Задание 3.4:
3.4.1: Функция имеет параметр number (по умолчанию - 0)
3.4.2: Функция должна вернуть объект, у которого должно быть несколько методов:
- sum - складывает number с переданными аргументами
- dif - вычитает из number переданные аргументы
- div - делит number на первый аргумент. Результат делится на следующий аргумент (если передан) и так далее
- mul - умножает number на первый аргумент. Результат умножается на следующий аргумент (если передан) и так далее
Количество передаваемых в методы аргументов заранее неизвестно
3.4.3: Необходимо выбрасывать исключение в случаях:
- number не является числом (с текстом "number is not a number")
- какой-либо из аргументов div является нулем (с текстом "division by 0")
- Запустить тесты и убедиться, что они прошли
- Сделайте коммит и пуш изменений
- Создайте пулл реквест и отправьте его на проверку наставнику
Дедлайн: понедельник следующей недели, в 12.00.
# Как всё успеть?
Данный план является примерным ориентиром. Вы всегда можете работать в удобном для себя темпе.
# 🗓 Понедельник
Изучаем материалы по теме "Объекты и массивы"
Выполняем домашнее задание 2
# 🗓 Вторник
Продолжаем изучать материалы по теме "Объекты и массивы"
Сдаём домашнее задание 2 на проверку.
Вносим правки в домашнее задание №2 после проверки его наставником.
# 🗓 Среда
Изучаем материалы по теме "Обработка ошибок и отладка"
Изучаем материалы из прикрепленных ссылок
Выполняем домашнее задание 3
# 🗓 Четверг
Сдаём домашнее задание 3 на проверку.
Подготовьте вопросы и запишитесь на консультацию к наставнику.
# 🗓 Пятница
Смотрим воркшоп с разбором заданий по второй неделе.
# 🗓 Суббота - Воскресенье
Вносим правки в домашнее задание №3 после проверки его наставником.