diff --git a/lessons/lesson04/lesson.md b/lessons/lesson04/lesson.md index 4152392..a4b3332 100644 --- a/lessons/lesson04/lesson.md +++ b/lessons/lesson04/lesson.md @@ -657,4 +657,4 @@ describe('createCalculatorUI', () => { -Опрос о занятии \ No newline at end of file +Опрос о занятии diff --git a/lessons/lesson06/code/smart-getter/index.html b/lessons/lesson06/code/smart-getter/index.html index 8fe8d42..79147bf 100644 --- a/lessons/lesson06/code/smart-getter/index.html +++ b/lessons/lesson06/code/smart-getter/index.html @@ -1,59 +1,91 @@ - -
-_.get
из lodashobj.property
или obj["property"]
.obj.user.profile.name
или obj['user']['profile'].name
-
- Подробнее: learn.javascript.ru: Объекты
- split()
для разбивки строки пути на части: 'user.profile.name'.split('.')
.
- undefined
. Можно проверить через сравнение с undefined
или оператор in
: 'key' in obj
.
- Подробнее: learn.javascript.ru: Объекты
- if
для проверки условий, например: если свойство не найдено, вернуть значение по умолчанию.
-
- Реализуйте функцию get
, которая позволяет безопасно получать значения из вложенных объектов по
- строковому пути. Эта функция должна работать аналогично методу _.get
из библиотеки lodash.
-
+
+ Safe Getter
+
+
+
+
+
+
+
+
+
+ Задача: Реализация аналога функции _.get
из lodash
+
+ Минимальный набор знаний
+
+ -
+ Доступ к свойствам объекта (через точку и скобки): -
+
obj.property
или obj["property"]
.
+ Квадратные скобки позволяют использовать переменную с именем свойства.
+ Подробнее:
+ MDN: Работа с объектами
+
+ -
+ Работа с вложенными объектами: - Для доступа к
+ свойствам внутри других объектов используйте последовательный доступ:
+
obj.user.profile.name
или
+ obj['user']['profile'].name
-
+ Подробнее:
+ learn.javascript.ru: Объекты
+
+ -
+ Работа со строками и массивами: - Используйте
+
split()
+ для разбивки строки пути на части:
+ 'user.profile.name'.split('.')
.
+
+ -
+ Проверка существования свойства:- Если обратиться к
+ несуществующему свойству, вернётся
undefined
. Можно
+ проверить через сравнение с undefined
или оператор
+ in
: 'key' in obj
.
+ Подробнее:
+ learn.javascript.ru: Объекты
+
+ -
+ Условные конструкции:- Используйте
+
if
для проверки условий, например: если свойство не
+ найдено, вернуть значение по умолчанию.
+
+ -
+ Объявление функций с несколькими аргументами
+
+ -
+ Обработка пустого пути - как проверить что строка или
+ другое значение "пустое"
+
+
+
+ Что нужно сделать
+
+ Реализуйте функцию get
, которая позволяет безопасно
+ получать значения из вложенных объектов по строковому пути. Эта функция
+ должна работать аналогично методу
+ _.get
из библиотеки lodash.
+
+
/**
* get: Smart getter for object props
*
@@ -64,65 +96,101 @@ Что нужно сделать
* @param {any} fallbackValue
*/
-
-
-
- Описание в JSDoc
- Пояснение простыми словами
-
-
-
-
- get: Smart getter for object props
- Это функция, которая "умно" достает значения свойств из объекта.
-
-
- Check tests for usage examples
- Посмотри тесты, чтобы увидеть примеры использования этой функции.
-
-
- @param {any} obj
- Первый аргумент — объект, из которого нужно получить значение.
-
-
- @param {string} property
- Второй аргумент — строка с путем к нужному свойству, например: 'user.profile.name'
.
-
-
- @param {any} fallbackValue
- Третий аргумент — значение по умолчанию, которое возвращается, если свойство не найдено.
-
-
-
-
-
- Описание задачи
-
- - Функция принимает объект, строку с путем до свойства (через точку или скобки, например,
-
'user.profile.name'
или 'user["profile"].name'
) и значение по умолчанию.
- - Возвращает значение, найденное по этому пути, либо значение по умолчанию, если путь не существует или где-то
- на пути встречается
undefined
или null
.
- - Если путь пустой, функция должна вернуть сам объект.
-
-
- Когда бывает полезна
-
- - Когда структура объекта заранее неизвестна или может быть глубоко вложенной.
- - Когда нужно избежать ошибок при попытке доступа к несуществующим свойствам (например,
-
Cannot read property 'x' of undefined'
).
- - Для обработки данных из API, где некоторые поля могут отсутствовать.
-
-
- Где такая функция уже используется
-
- - В библиотеке lodash функция называется
_.get
и широко применяется для безопасного доступа к
- вложенным данным.
- - Аналогичные функции есть в других библиотеках, например, в Ramda (
R.path
), а также в различных
- утилитах для JavaScript/TypeScript.
-
-
- Пример использования
-
+
+
+
+ Описание в JSDoc
+ Пояснение простыми словами
+
+
+
+
+ get: Smart getter for object props
+
+ Это функция, которая "умно" достает значения свойств из объекта.
+
+
+
+ Check tests for usage examples
+
+ Посмотри тесты, чтобы увидеть примеры использования этой функции.
+
+
+
+ @param {any} obj
+
+ Первый аргумент — объект, из которого нужно получить значение.
+
+
+
+ @param {string} property
+
+ Второй аргумент — строка с путем к нужному свойству, например:
+ 'user.profile.name'
.
+
+
+
+ @param {any} fallbackValue
+
+ Третий аргумент — значение по умолчанию, которое возвращается,
+ если свойство не найдено.
+
+
+
+
+
+ Описание задачи
+
+ -
+ Функция принимает объект, строку с путем до свойства (через точку или
+ скобки, например,
'user.profile.name'
или
+ 'user["profile"].name'
) и значение по умолчанию.
+
+ -
+ Возвращает значение, найденное по этому пути, либо значение по
+ умолчанию, если путь не существует или где-то на пути встречается
+
undefined
или null
.
+
+ - Если путь пустой, функция должна вернуть сам объект.
+
+
+
+ Когда
+ бывает полезна
+
+
+ -
+ Когда структура объекта заранее неизвестна или может быть глубоко
+ вложенной.
+
+ -
+ Когда нужно избежать ошибок при попытке доступа к несуществующим
+ свойствам (например,
+
Cannot read property 'x' of undefined'
).
+
+ -
+ Для обработки данных из API, где некоторые поля могут отсутствовать.
+
+
+
+ Где такая функция уже используется
+
+ -
+ В библиотеке lodash функция называется
_.get
и широко
+ применяется для безопасного доступа к вложенным данным.
+
+ -
+ Аналогичные функции есть в других библиотеках, например, в Ramda
+ (
R.path
), а также в различных утилитах для
+ JavaScript/TypeScript.
+
+
+
+ Пример использования
+
const obj = { user: { profile: { name: 'Ivan' } } };
get(obj, 'user.profile.name', 'No name'); // вернет 'Ivan'
@@ -131,10 +199,12 @@ Пример использования
get(obj, '', 'default'); // вернет весь объект obj
- Ваша задача — реализовать эту функцию самостоятельно, не используя lodash или другие сторонние
- библиотеки.
-
-
-
-
-
\ No newline at end of file
+
+ Ваша задача — реализовать эту функцию самостоятельно, не используя
+ lodash или другие сторонние библиотеки.
+
+