Skip to content

Commit 6f2ab71

Browse files
authored
Revert "Some improvements"
1 parent 4b11af7 commit 6f2ab71

File tree

3 files changed

+31
-34
lines changed

3 files changed

+31
-34
lines changed

1-js/05-data-types/07-map-set/article.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
Методы и свойства:
1616

1717
- `new Map()` -- создаёт коллекцию.
18-
- [`map.set(key, value)`](mdn:js/Map/set) -- записывает по ключу `key` значение `value`.
19-
- [`map.get(key)`](mdn:js/Map/get) -- возвращает значение по ключу или `undefined`, если ключ `key` отсутствует.
20-
- [`map.has(key)`](mdn:js/Map/has) -- возвращает `true`, если ключ `key` присутствует в коллекции, иначе `false`.
21-
- [`map.delete(key)`](mdn:js/Map/delete) -- удаляет элемент по ключу `key`.
22-
- [`map.clear()`](mdn:js/Map/clear) -- очищает коллекцию от всех элементов.
23-
- [`map.size`](mdn:js/Map/size) -- возвращает текущее количество элементов.
18+
- `map.set(key, value)` -- записывает по ключу `key` значение `value`.
19+
- `map.get(key)` -- возвращает значение по ключу или `undefined`, если ключ `key` отсутствует.
20+
- `map.has(key)` -- возвращает `true`, если ключ `key` присутствует в коллекции, иначе `false`.
21+
- `map.delete(key)` -- удаляет элемент по ключу `key`.
22+
- `map.clear()` -- очищает коллекцию от всех элементов.
23+
- `map.size` -- возвращает текущее количество элементов.
2424

2525
Например:
2626

@@ -104,9 +104,9 @@ map.set("1", "str1")
104104
105105
Для перебора коллекции `Map` есть 3 метода:
106106
107-
- [`map.keys()`](mdn:js/Map/keys) -- возвращает итерируемый объект по ключам,
108-
- [`map.values()`](mdn:js/Map/values) -- возвращает итерируемый объект по значениям,
109-
- [`map.entries()`](mdn:js/Map/entries) -- возвращает итерируемый объект по парам вида `[ключ, значение]`, этот вариант используется по умолчанию в `for..of`.
107+
- `map.keys()` -- возвращает итерируемый объект по ключам,
108+
- `map.values()` -- возвращает итерируемый объект по значениям,
109+
- `map.entries()` -- возвращает итерируемый объект по парам вида `[ключ, значение]`, этот вариант используется по умолчанию в `for..of`.
110110
111111
Например:
112112
@@ -237,11 +237,11 @@ let obj = Object.fromEntries(map); // убрать .entries()
237237
Его основные методы это:
238238
239239
- `new Set(iterable)` -- создаёт `Set`, и если в качестве аргумента был предоставлен итерируемый объект (обычно это массив), то копирует его значения в новый `Set`.
240-
- [`set.add(value)`](mdn:js/Set/add) -- добавляет значение (если оно уже есть, то ничего не делает), возвращает тот же объект `set`.
241-
- [`set.delete(value)`](mdn:js/Set/delete) -- удаляет значение, возвращает `true`, если `value` было в множестве на момент вызова, иначе `false`.
242-
- [`set.has(value)`](mdn:js/Set/has) -- возвращает `true`, если значение присутствует в множестве, иначе `false`.
243-
- [`set.clear()`](mdn:js/Set/clear) -- удаляет все имеющиеся значения.
244-
- [`set.size`](mdn:js/Set/size) -- возвращает количество элементов в множестве.
240+
- `set.add(value)` -- добавляет значение (если оно уже есть, то ничего не делает), возвращает тот же объект `set`.
241+
- `set.delete(value)` -- удаляет значение, возвращает `true`, если `value` было в множестве на момент вызова, иначе `false`.
242+
- `set.has(value)` -- возвращает `true`, если значение присутствует в множестве, иначе `false`.
243+
- `set.clear()` -- удаляет все имеющиеся значения.
244+
- `set.size` -- возвращает количество элементов в множестве.
245245
246246
Основная "изюминка" - это то, что при повторных вызовах `set.add()` с одним и тем же значением ничего не происходит, за счёт этого как раз и получается, что каждое значение появляется один раз.
247247
@@ -294,9 +294,9 @@ set.forEach((value, valueAgain, set) => {
294294
295295
`Set` имеет те же встроенные методы, что и `Map`:
296296
297-
- [`set.keys()`](mdn:js/Set/keys) -- возвращает перебираемый объект для значений,
298-
- [`set.values()`](mdn:js/Set/values) -- то же самое, что и `set.keys()`, присутствует для обратной совместимости с `Map`,
299-
- [`set.entries()`](mdn:js/Set/entries) -- возвращает перебираемый объект для пар вида `[значение, значение]`, присутствует для обратной совместимости с `Map`.
297+
- `set.values()` -- возвращает перебираемый объект для значений,
298+
- `set.keys()` -- то же самое, что и `set.values()`, присутствует для обратной совместимости с `Map`,
299+
- `set.entries()` -- возвращает перебираемый объект для пар вида `[значение, значение]`, присутствует для обратной совместимости с `Map`.
300300
301301
## Итого
302302
@@ -305,12 +305,12 @@ set.forEach((value, valueAgain, set) => {
305305
Методы и свойства:
306306
307307
- `new Map([iterable])` -- создаёт коллекцию, можно указать перебираемый объект (обычно массив) из пар `[ключ,значение]` для инициализации.
308-
- [`map.set(key, value)`](mdn:js/Map/set) -- записывает по ключу `key` значение `value`.
309-
- [`map.get(key)`](mdn:js/Map/get)` -- возвращает значение по ключу или `undefined`, если ключ `key` отсутствует.
310-
- [`map.has(key)`](mdn:js/Map/has) -- возвращает `true`, если ключ `key` присутствует в коллекции, иначе `false`.
311-
- [`map.delete(key)`](mdn:js/Map/delete) -- удаляет элемент по ключу `key`.
312-
- [`map.clear()`](mdn:js/Map/clear) -- очищает коллекцию от всех элементов.
313-
- [`map.size`](mdn:js/Map/size) -- возвращает текущее количество элементов.
308+
- `map.set(key, value)` -- записывает по ключу `key` значение `value`.
309+
- `map.get(key)` -- возвращает значение по ключу или `undefined`, если ключ `key` отсутствует.
310+
- `map.has(key)` -- возвращает `true`, если ключ `key` присутствует в коллекции, иначе `false`.
311+
- `map.delete(key)` -- удаляет элемент по ключу `key`.
312+
- `map.clear()` -- очищает коллекцию от всех элементов.
313+
- `map.size` -- возвращает текущее количество элементов.
314314
315315
Отличия от обычного объекта `Object`:
316316
@@ -322,10 +322,10 @@ set.forEach((value, valueAgain, set) => {
322322
Методы и свойства:
323323
324324
- `new Set([iterable])` -- создаёт `Set`, можно указать перебираемый объект со значениями для инициализации.
325-
- [`set.add(value)`](mdn:js/Set/add) -- добавляет значение (если оно уже есть, то ничего не делает), возвращает тот же объект `set`.
326-
- [`set.delete(value)`](mdn:js/Set/delete) -- удаляет значение, возвращает `true` если `value` было в множестве на момент вызова, иначе `false`.
327-
- [`set.has(value)`](mdn:js/Set/has) -- возвращает `true`, если значение присутствует в множестве, иначе `false`.
328-
- [`set.clear()`](mdn:js/Set/clear) -- удаляет все имеющиеся значения.
329-
- [`set.size`](mdn:js/Set/size) -- возвращает количество элементов в множестве.
325+
- `set.add(value)` -- добавляет значение (если оно уже есть, то ничего не делает), возвращает тот же объект `set`.
326+
- `set.delete(value)` -- удаляет значение, возвращает `true` если `value` было в множестве на момент вызова, иначе `false`.
327+
- `set.has(value)` -- возвращает `true`, если значение присутствует в множестве, иначе `false`.
328+
- `set.clear()` -- удаляет все имеющиеся значения.
329+
- `set.size` -- возвращает количество элементов в множестве.
330330
331331
Перебор `Map` и `Set` всегда осуществляется в порядке добавления элементов, так что нельзя сказать, что это -- неупорядоченные коллекции, но поменять порядок элементов или получить элемент напрямую по его номеру нельзя.

1-js/06-advanced-functions/01-recursion/01-sum-to/solution.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
Решение с помощью цикла:
32

43
```js run
@@ -38,4 +37,4 @@ P.S. Надо ли говорить, что решение по формуле
3837

3938
Вариант с циклом – второй по скорости. Он быстрее рекурсии, так как операций сложения столько же, но нет дополнительных вычислительных затрат на организацию вложенных вызовов. Поэтому рекурсия в данном случае работает медленнее всех.
4039

41-
P.P.S. Некоторые движки поддерживают оптимизацию "хвостового вызова": если рекурсивный вызов является самым последним в функции, без каких-либо других вычислений, то внешней функции не нужно будет возобновлять выполнение и не нужно запоминать контекст его выполнения. В итоге требования к памяти снижаются. Но если JavaScript-движок не поддерживает это (большинство не поддерживают), будет ошибка: максимальный размер стека превышен, так как обычно существует ограничение на максимальный размер стека.
40+
P.P.S. Некоторые движки поддерживают оптимизацию "хвостового вызова": если рекурсивный вызов является самым последним в функции (`sumTo` выше не будет оптимизирован, т.к. последним происходит сложение, а не рекурсивный вызов), то внешней функции не нужно будет возобновлять выполнение и не нужно запоминать контекст его выполнения. В итоге требования к памяти снижаются, и сумма `sumTo(100000)` будет успешно вычислена. Но если JavaScript-движок не поддерживает это (большинство не поддерживают), будет ошибка: максимальный размер стека превышен, так как обычно существует ограничение на максимальный размер стека.

1-js/06-advanced-functions/01-recursion/article.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
# Рекурсия и стек
32

43
Вернёмся к функциям и изучим их более подробно.
@@ -62,7 +61,7 @@ pow(2, 4) = 16
6261
if n==1 = x
6362
/
6463
pow(x, n) =
65-
\
64+
\
6665
else = x * pow(x, n - 1)
6766
```
6867

@@ -516,7 +515,6 @@ list.next = list.next.next;
516515
## Итого
517516

518517
Термины:
519-
520518
- *Рекурсия* - это термин в программировании, означающий вызов функцией самой себя. Рекурсивные функции могут быть использованы для элегантного решения определённых задач.
521519

522520
Когда функция вызывает саму себя, это называется *шагом рекурсии*. *База* рекурсии - это такие аргументы функции, которые делают задачу настолько простой, что решение не требует дальнейших вложенных вызовов.
@@ -529,7 +527,7 @@ list.next = list.next.next;
529527
list = { value, next -> list }
530528
```
531529

532-
Деревья, такие как дерево HTML-элементов или дерево отделов из этой главы, также являются рекурсивными: у них есть ветви, и каждая ветвь может содержать другие ветви.
530+
Деревья, такие как дерево HTML-элементов или дерево отделов из этой главы, также являются рекурсивными: они разветвляются, и каждая ветвь может содержать другие ветви.
533531

534532
Как мы видели в примере `sumSalary`, рекурсивные функции могут быть использованы для прохода по ним.
535533

0 commit comments

Comments
 (0)