Page 194 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 194
Если мы теперь хотим добавить роль пользователя, можем воспользоваться ме
тодом add ( ) .
e
rol s . a dd ( "User" ) ; / / Набор [ 11User11 ]
(
Чтобы сделать этого пользователя администратором, вызовите метод add ) сно-
ва.
n
roles . a dd ( "Admi " ) ; / / Набор [ "User" , "Admin "
Как и у Мар, у объекта Set есть свойство i ze.
s
roles . s i z e ; 1 1 2
Достоинство наборов в том, что мы не должны выяснять, находится ли уже нечто
в наборе, прежде чем его добавим. При попытке добавить в набор нечто, что уже там
находится, ничего не происходит.
e
rol s . a dd ( "User" ) ; 1 1 Набор "User", "Admin " ]
roles . s ize; 1 1 2
(
Чтобы удалить роль, мы просто вызываем метод delete ) , который возвращает
true, если роль была в наборе, и false - в противном случае.
roles . d elete ( "Admin" ) ; 1 1 true
e
rol s ; / / Набор [ "User" J
n
roles . d elete ( "Admi " ) ; / / false
Слабые наборы
Слабые наборы могут содержать только объекты, и эти объекты удаляются в про
цессе сборки мусора. Как и в WeakМap, значения в WeakSet не могут быть перебраны,
что делает слабые наборы очень редко применяемыми. Фактически единственный
подходящий случай использования для слабых наборов - это когда необходимо
определять, есть ли данный объект в наборе.
t
Например, у Санта Клауса мог бы быть WeakSet по имени naugh y (непослуш
ные), чтобы он мог решить, кому достанется уголь.
const naughty = new WeakSet ( ) ;
const children = [
name : " S uzy" } ,
name : " D erek" } ,
] ;
naughty . a dd ( c hildren [ l ] ) ;
for ( let child of children)
if ( naughty . h a s ( c hild) )
Слабые наборы 1 9 5

