You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
<h2>Задача: Реализация аналога функции <code>_.get</code> из lodash</h2>
16
+
17
+
<h3>Минимальный набор знаний</h3>
18
+
<ul>
19
+
<li>
20
+
<strong>Доступ к свойствам объекта (через точку и скобки):</strong> - <code>obj.property</code> или <code>obj["property"]</code>.<br>
21
+
Квадратные скобки позволяют использовать переменную с именем свойства. <small>Подробнее: <ahref="https://developer.mozilla.org/ru/docs/Web/JavaScript/Guide/Working_with_objects" target="_blank">MDN: Работа с объектами</a></small>
22
+
</li>
23
+
<li>
24
+
<strong>Работа с вложенными объектами:</strong> -
25
+
Для доступа к свойствам внутри других объектов используйте последовательный доступ: <code>obj.user.profile.name</code> или <code>obj['user']['profile'].name</code> -
<strong>Работа со строками и массивами:</strong> -
30
+
Используйте <ahref="https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/String/split" target="_blank"><code>split()</code></a> для разбивки строки пути на части: <code>'user.profile.name'.split('.')</code>.
31
+
</li>
32
+
<li>
33
+
<strong>Проверка существования свойства:</strong>-
34
+
Если обратиться к несуществующему свойству, вернётся <code>undefined</code>. Можно проверить через сравнение с <code>undefined</code> или оператор <code>in</code>: <code>'key' in obj</code>.
Используйте <code>if</code> для проверки условий, например: если свойство не найдено, вернуть значение по умолчанию.
40
+
</li>
41
+
<li>
42
+
<strong>Объявление функций с несколькими аргументами</strong>
43
+
</li>
44
+
<li>
45
+
<strong>Обработка пустого пути</strong> - как проверить что строка или другое значение "пустое"
46
+
</li>
47
+
</ul>
48
+
49
+
50
+
51
+
<h3>Что нужно сделать</h3>
52
+
<p>
53
+
Реализуйте функцию <code>get</code>, которая позволяет безопасно получать значения из вложенных объектов по
54
+
строковому пути. Эта функция должна работать аналогично методу <ahref="https://webdevkin.ru/posts/frontend/lodash-get" target="_blank"><code>_.get</code> из библиотеки lodash</a>.
55
+
</p>
56
+
<pre><code>
57
+
/**
58
+
* get: Smart getter for object props
59
+
*
60
+
* Check tests for usage examples
61
+
*
62
+
* @param {any} obj
63
+
* @param {string} property
64
+
* @param {any} fallbackValue
65
+
*/
66
+
</code></pre>
67
+
<table>
68
+
<thead>
69
+
<tr>
70
+
<th>Описание в JSDoc</th>
71
+
<th>Пояснение простыми словами</th>
72
+
</tr>
73
+
</thead>
74
+
<tbody>
75
+
<tr>
76
+
<td><code>get: Smart getter for object props</code></td>
77
+
<td>Это функция, которая "умно" достает значения свойств из объекта.</td>
78
+
</tr>
79
+
<tr>
80
+
<td><code>Check tests for usage examples</code></td>
81
+
<td>Посмотри тесты, чтобы увидеть примеры использования этой функции.</td>
82
+
</tr>
83
+
<tr>
84
+
<td><code>@param {any} obj</code></td>
85
+
<td>Первый аргумент — объект, из которого нужно получить значение.</td>
86
+
</tr>
87
+
<tr>
88
+
<td><code>@param {string} property</code></td>
89
+
<td>Второй аргумент — строка с путем к нужному свойству, например: <code>'user.profile.name'</code>.</td>
90
+
</tr>
91
+
<tr>
92
+
<td><code>@param {any} fallbackValue</code></td>
93
+
<td>Третий аргумент — значение по умолчанию, которое возвращается, если свойство не найдено.</td>
94
+
</tr>
95
+
</tbody>
96
+
</table>
97
+
98
+
99
+
<h3>Описание задачи</h3>
100
+
<ul>
101
+
<li>Функция принимает объект, строку с путем до свойства (через точку или скобки, например,
102
+
<code>'user.profile.name'</code> или <code>'user["profile"].name'</code>) и значение по умолчанию.</li>
103
+
<li>Возвращает значение, найденное по этому пути, либо значение по умолчанию, если путь не существует или где-то
104
+
на пути встречается <code>undefined</code> или <code>null</code>.</li>
105
+
<li>Если путь пустой, функция должна вернуть сам объект.</li>
0 commit comments