Skip to content

Commit 93794a9

Browse files
committed
Fix punctuation issues
1 parent 3656d06 commit 93794a9

File tree

1 file changed

+20
-20
lines changed
  • 1-js/05-data-types/07-map-set-weakmap-weakset

1 file changed

+20
-20
lines changed

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

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
# Map, Set, WeakMap and WeakSet
2+
# Map, Set, WeakMap и WeakSet
33

44
Сейчас мы знаем о следующих сложных структурах данных:
55

@@ -10,29 +10,29 @@
1010

1111
## Map
1212

13-
[Map](mdn:js/Map) это коллекция именованных элементов, как и `Object`. Но основное отличие в том что `Map` позволяет использовать ключи любого типа.
13+
[Map](mdn:js/Map) -- это коллекция именованных элементов, как и `Object`. Но основное отличие в том, что `Map` позволяет использовать ключи любого типа.
1414

1515
Основные методы объекта:
1616

1717
- `new Map()` -- создаёт объект (коллекцию) Map.
18-
- `map.set(key, value)` -- устанавливает значение `value` элемента по его ключу `key`.
19-
- `map.get(key)` -- возвращает значение по ключу или `undefined` если ключ`key` не присутствует в объекте Map.
20-
- `map.has(key)` -- возвращает `true` если `key` присутствует в Map или `false` в обратном случае.
18+
- `map.set(key, value)` -- устанавливает элементу с ключём `key` значение `value`.
19+
- `map.get(key)` -- возвращает значение по ключу или `undefined`, если ключ`key` не присутствует в объекте `Map`.
20+
- `map.has(key)` -- возвращает `true`, если `key` присутствует в Map или `false` в обратном случае.
2121
- `map.delete(key)` -- удаляет элемент по ключу `key`.
22-
- `map.clear()` -- очищает объект Map от всех элементов
22+
- `map.clear()` -- очищает объект `Map` от всех элементов
2323
- `map.size` -- возвращает текущее количество элементов.
2424

2525
Например:
2626

2727
```js run
2828
let map = new Map();
2929

30-
map.set('1', 'str1'); // строка в качестве ключа
31-
map.set(1, 'num1'); // цифра как ключ
32-
map.set(true, 'bool1'); // булевое значение как ключ
30+
map.set('1', 'str1'); //строка в качестве ключа
31+
map.set(1, 'num1'); //цифра как ключ
32+
map.set(true, 'bool1'); //булево значение как ключ
3333

3434
// помните обычный объект `Object`? Он приводит ключи к строкам
35-
// Map сохраняет тип ключей, так что в этом случае хранится 2 разных значения:
35+
// Map сохраняет тип ключей, так что в этом случае сохранится 2 разных значения:
3636
alert(map.get(1)); // 'num1'
3737
alert(map.get('1')); // 'str1'
3838

@@ -47,16 +47,16 @@ alert(map.size); // 3
4747
```js run
4848
let john = { name: 'John' };
4949

50-
// давайте хранить количество посещений для каждого пользователя
50+
// давайте сохраним количество посещений для каждого пользователя
5151
let visitsCountMap = new Map();
5252

53-
// объект john это ключ для значения в объекте Map
53+
// объект john -- это ключ для значения в объекте Map
5454
visitsCountMap.set(john, 123);
5555

5656
alert(visitsCountMap.get(john)); // 123
5757
```
5858

59-
Использование объектов в качестве ключей это одна из известных и часто применимых возможностей объекта `Map`. Для использования строковых ключей, объекта `Object` может быть достаточно, но будет достаточно сложно найти способ заменить объект `Map` обычным объектом `Object` в примере выше.
59+
Использование объектов в качестве ключей -- это одна из известных и часто применяемых возможностей объекта `Map`. Для использования строковых ключей объекта `Object` может быть достаточно, но будет достаточно сложно найти способ заменить объект `Map` обычным объектом `Object` в примере выше.
6060

6161
Например:
6262

@@ -68,12 +68,12 @@ let visitsCountObj = {}; // попробуем использовать объе
6868
visitsCountObj[john] = 123; // пробуем использовать объект john как ключ
6969

7070
*!*
71-
// That's what got written!
71+
// Вот как это было записано!
7272
alert( visitsCountObj["[object Object]"] ); // 123
7373
*/!*
7474
```
7575

76-
Так как `john` это объект, он был преобразован в строку `"[object Object]"`. Все объекты без специальной обработки подобных преобразований приводятся к подобной строке, так что будьте внимательны чтобы случайно всё не испортить.
76+
Так как `john` -- это объект, он был преобразован в строку `"[object Object]"`. Все объекты без специальной обработки подобных преобразований приводятся к подобной строке, так что будьте внимательны, чтобы случайно всё не испортить.
7777

7878
Давным-давно, до появления `Map`, люди добавляли уникальные идентификаторы примерно таким образом:
7979

@@ -95,7 +95,7 @@ alert( visitsCounts[john.id] ); // 123
9595
```smart header="Как объект `Map` сравнивает ключи"
9696
Чтобы проверить значения на равенство, объект `Map` использует алгоритм [SameValueZero](https://tc39.github.io/ecma262/#sec-samevaluezero). Это почти такое же сравнение что и `===`, с той лишь разницей что `NaN` считается равным `NaN`. Так что `NaN` так же может использоваться в качестве ключа.
9797

98-
Этот алгоритм не может быть заменен или модифицирован.
98+
Этот алгоритм не может быть заменён или модифицирован.
9999
```
100100
101101
@@ -123,7 +123,7 @@ let map = new Map([
123123
]);
124124
```
125125
126-
Существует встроенный метод [Object.entries(obj)](mdn:js/Object/entries) который возвращает массив пар ключ-значение из содержимого переданного объекта как раз в нужном формате.
126+
Существует встроенный метод [Object.entries(obj)](mdn:js/Object/entries), который возвращает массив пар ключ-значение из содержимого переданного объекта как раз в нужном формате.
127127
128128
Так что мы можем создать объект Map из объекта следующим образом:
129129
@@ -192,7 +192,7 @@ recipeMap.forEach((value, key, map) => {
192192
- `new Set(iterable)` -- создает объект Set, и если в качестве аргумента был предоставлен итерируемый объект (обычно это массив), то копирует его значения в новый объект Set.
193193
- `set.add(value)` -- добавляет значение, возвращается тот же объект set.
194194
- `set.delete(value)` -- удаляет значение, возвращает `true` если `значение` было в объекте Set в момент вызова, иначе `false`.
195-
- `set.has(value)` -- возвращает `true` если значение присутствует в объекте Set, иначе `false`.
195+
- `set.has(value)` -- возвращает `true`, если значение присутствует в объекте Set, иначе `false`.
196196
- `set.clear()` -- удаляет все имеющиеся значения.
197197
- `set.size` -- возвращает количество элементов в объекте Set.
198198
@@ -269,7 +269,7 @@ john = null;
269269
*/!*
270270
```
271271
272-
Обычно свойство объекта, элемента массива или другой структуры данных считаются достижимыми и сохраняются в памяти до тех пор пока структура данных содержится в памяти.
272+
Обычно свойство объекта, элемента массива или другой структуры данных считаются достижимыми и сохраняются в памяти до тех пор, пока структура данных содержится в памяти.
273273
274274
Например, если мы поместим объект в массив, то до тех пор пока массив существует, объект также будет существовать в памяти, несмотря на то что других ссылок на него нет.
275275
@@ -405,7 +405,7 @@ john = null;
405405
// так что объект будет автоматически удалён и из памяти и из коллекции visitsCountMap
406406
```
407407
408-
С обычным `Map`, очистка памяти после того как пользователь ушел может быть утомительной задачей: нам не только нужно удалить пользователя из главного хранилища (он может быть как в переменной так и в массиве), но также очистить и другие места хранения ссылки на этот объект, как например `visitsCountMap`. И это решение может стать более громоздким в более сложных случаях, когда поведение пользователей отслеживается в одном месте, а дополнительные структуры в другом, и у нас нет информации об удалении пользователя.
408+
С обычным `Map`, очистка памяти после того как пользователь ушёл может быть утомительной задачей: нам не только нужно удалить пользователя из главного хранилища (он может быть как в переменной так и в массиве), но также очистить и другие места хранения ссылки на этот объект, как например `visitsCountMap`. И это решение может стать более громоздким в более сложных случаях, когда поведение пользователей отслеживается в одном месте, а дополнительные структуры в другом, и у нас нет информации об удалении пользователя.
409409
410410
```summary
411411
`WeakMap` может сделать вашу жизнь проще, потому как он очищается автоматически. Данные в нем, как пользователи в примере выше, хранятся автоматически до тех пор, пока существует объект используемый в качестве ключа.

0 commit comments

Comments
 (0)