En el pasado,
JavaScript siempre ha tenido muy poco
estructuras de datos incorporadas.
Básicamente, solo teníamos objetos y matrices.
Pero en ESX, dos estructuras de datos más
finalmente fueron presentados.
Y eso son. conjuntos y mapas.
Estas son estructuras de datos bastante comunes.
que ya existe en otros lenguajes de programación,
y ahora, también existen en JavaScript.
Entonces, en esta lección, aprendamos todo acerca de los conjuntos.
Y un conjunto es básicamente solo una colección.
de valores únicos.
Eso significa que un conjunto nunca puede tener duplicados.
Y esa propiedad los hace útiles.
en determinadas situaciones.
Así que vamos a crear un nuevo conjunto aquí.
Llamémoslo ordersSet.
Bueno. De nuevo, para crear un nuevo conjunto,
escribimos nuevo conjunto
y luego aquí, necesitamos pasar un iterable.
Y el iterable más común aquí es una matriz.
Así que vamos a crear una matriz
con un par de cuerdas ahora.
Digamos pasta, pizza,
luego pizza de nuevo,
luego risotto. Pongamos otra pasta,
y otra pizza
Bueno. Así que seis cuerdas.
Pero, por supuesto, podrían ser diferentes tipos de datos aquí.
Entonces, el conjunto puede, por supuesto, contener tipos de datos mixtos.
Eso no es un problema en absoluto.
Ahora, aquí vemos claramente algunas cadenas duplicadas.
Entonces, qué piensas
que este conjunto se verá como?
Y ahora que lo creamos,
y cuando lo registramos en la consola?
Bueno, tenemos un conjunto.
Aquí, podemos ver que tiene un tamaño de tres.
Y los únicos valores que están ahí
son pasta, pizza y risotto.
Entonces, eso es correcto. Todos los duplicados en realidad se han ido.
Ahora, también podemos ver que un conjunto
tipo de parece similar a una matriz, a la derecha.
Entonces no hay pares de valores clave,
es solo un grupo de valores agrupados,
en este caso en un conjunto.
Y al igual que las matrices, los conjuntos también son iterables.
Bueno. Ahora, por supuesto, un conjunto
sigue siendo muy diferente de una matriz.
Primero, porque sus elementos son únicos.
Y segundo, porque el orden
de elementos en el conjunto es irrelevante.
Y veremos por qué en un segundo.
Pero de todos modos, tenga en cuenta que las cuerdas
también son iterables.
Así que podemos hacer esto.
Entonces podemos pasar una cadena.
Y ahora tenemos un conjunto
con estos cinco elementos.
Entonces, y esos son los cinco componentes básicamente
de este iterable, que es la cadena.
Y por supuesto, el set también podría estar vacío,
así como esto
Está bien. Y ahora vamos a aprender cómo
para trabajar realmente con conjuntos.
En primer lugar, podemos obtener el tamaño de un conjunto.
Entonces orderSet.size.
Y así son tres.
Y así, en este ejemplo particular,
esto podría ser útil para el chef de nuestra cocina
para saber cuantas comidas diferentes
se van a cocinar aquí.
Bien. Entonces, si esta matriz aquí es una matriz
de todos los pedidos,
entonces el conjunto de estas órdenes
son simplemente las diferentes comidas únicas
que se van a cocinar.
Y luego el tamaño
es ¿cuántas comidas diferentes se cocinarán?
Y solo tenga en cuenta cómo se llama tamaño
y no durar
como si estuviera en matrices.
Así que no hagas esa confusión.
A continuación, podemos comprobar si un determinado elemento está en un conjunto.
Entonces orderset.has.
Y entonces esto es en realidad un método.
Entonces, veamos si hay pizza allí.
Y veamos si hay pan ahí.
Tan cierto como falso.
Y eso es exactamente como lo esperamos.
Y así, comparando de nuevo dos matrices,
este tiene método es similar
al método include en arreglos.
Bien. Próximo paso,
también podemos añadir nuevos elementos a un conjunto.
Entonces orderSet.
Así que digamos que ahora alguien pidió pan de ajo.
Y digamos que en realidad sucedió dos veces.
Entonces, qué piensas
que el conjunto se verá como ahora?
Entonces orderSet.
Y así se añadió el pan de ajo.
Pero solo, por supuesto, uno de ellos,
porque de nuevo, el conjunto tiene que ser único.
Y así, el segundo fue básicamente ignorado.
Por último, también podemos eliminar elementos.
Así que hagámoslo antes del registro.
Así que orderSet.delete.
Así que todos estos nombres de métodos
son muy sencillos.
Y eso es porque esta es una característica tan moderna.
Así que las cosas modernas realmente tienen
estos nombres más sencillos,
y una forma diferente de trabajar
con las estructuras de datos.
Así que tenemos risotto aquí.
Y ahora aquí lo estamos eliminando.
Y así, de hecho, ahora se ha ido
del conjunto
Así que muy, muy fácil.
Y en las matrices, en realidad no hay método.
asi de sencillo.
Veremos como eliminar elementos
de arreglos más tarde.
Pero te puedo decir que es un poco más complejo.
Está bien, y eso es todo.
Pero ahora usted podría preguntar,
¿Cómo recuperamos valores de un conjunto?
¿Podemos tal vez usar un índice,
como en una carrera?
Entonces, ¿haciendo algo como, tal vez como esto aquí?
Y la respuesta, como veremos, es no.
Entonces esto no funciona,
nos da indefinido,
no importa qué número pongamos aquí.
Está bien. Y eso es
porque en los conjuntos en realidad no hay índices.
Y de hecho, no hay manera
de obtener valores de un conjunto.
Y si pensamos en esto,
entonces tiene sentido.
Así que realmente no hay necesidad de sacar datos
de un conjunto Eso es porque si todos los valores son únicos,
y si su orden no importa,
entonces no tiene sentido
de recuperar valores de un conjunto.
Todo lo que necesitamos saber
es si un cierto valor
está en el set o no.
Y es por eso que tenemos el método has.
Si su objetivo es almacenar valores en orden
y luego recuperarlo,
entonces el mejor caso de uso es simplemente usar una matriz.
No usarías un set para eso.
Y así de nuevo, no hay necesidad
para obtener valores de un conjunto,
porque si lo necesita, simplemente usará una matriz.
Finalmente, en realidad hay un método más aquí
pero no es tan importante.
Todo para lo que podemos usarlo es
para eliminar básicamente todos los elementos
del conjunto
Y así vemos que ahora está vacío, verdad.
Pero dejemos eso atrás,
para que podamos trabajar un poco más con un conjunto.
Así que como dije, al principio,
Los conjuntos también son iterables.
Y por lo tanto, podemos recorrerlos.
Así que digamos, orden
de pedidosConjunto
y no de...
Está apagado, obviamente.
Y luego podemos bloquear el pedido.
Y efectivamente, aquí están.
Así que el bucle es posible,
como en cualquier otro iterable.
Muy bien, ahora que sabemos cómo trabajar con conjuntos,
veamos un gran caso de uso para ellos en este momento.
Entonces, en una base de código normal,
el principal caso de uso de conjuntos es en realidad
para eliminar valores duplicados de matrices.
Así que escribamos eso aquí.
Ejemplo. Así que digamos que tenemos una matriz
en nuestro restaurante,
que contiene el personal de nuestro restaurante.
Digamos que tenemos una persona
ese es el camarero,
una persona, que es el chef,
otra persona, que es un camarero,
entonces también tenemos un gerente,
entonces tenemos otra persona
eso tambien es chef
y otro camarero.
Así que eso es una matriz
de todo nuestro personal en el restaurante.
Pero ahora digamos que por alguna razón,
solo nos interesa saber
qué diferentes puestos hay en nuestro restaurante.
O en otras palabras,
básicamente nos gustaría
tener una matriz única de esto, ¿verdad?
Así que esta matriz sin todos los duplicados
eso resolverá el problema.
Así que vamos a crear un conjunto para eso.
Bastante fácil, ¿verdad?
Entonces personal, único,
es igual a, nuevo, conjunto,
y luego el iterable
que tenemos que pasar, aquí está el personal
porque una matriz ya es iterable.
Ahora, esto aún no es el final de la solución,
pero vamos a echarle un vistazo por ahora.
Y, por supuesto, debe ser personal, único.
Y así, sí. Así que tenemos un conjunto ahora
con mesero, chef y gerente.
Así que las tres posiciones únicas.
Pero ahora realmente queremos esto
ser una matriz.
Pero la conversión de un conjunto
a una matriz es bastante fácil,
porque ambos son iterables.
Así que recuerda de antes
que el operador de propagación funciona
en todos los iterables. ¿Bien?
Así que eso incluye conjuntos.
Y ahora podemos crear una matriz alrededor de esto básicamente.
Y luego podemos desempacar
todo este conjunto aquí
utilizando el operador de propagación,
y luego se pondrán estos elementos
en la matriz recién construida. Bueno.
Y así, de hecho, ahora terminamos
con una nueva matriz. Bueno.
Así que el operador de propagación aquí funciona como
en una matriz. Realmente funciona exactamente igual.
Entonces toma todos los elementos del iterable.
y esencialmente los escribe aquí,
como separados por comas, a la derecha.
Ahora, si solo quisiéramos saber
cuantas posiciones diferentes hay
entonces la propiedad del tamaño
es muy útil.
Así que todo lo que tendrías que hacer,
a pesar de que esto se ve un poco raro,
sería decir,
nuevo conjunto, luego con la matriz,
y luego .tamaño.
Y eso es.
Y entonces ni siquiera necesitaríamos
tener que crear la matriz en absoluto.
Entonces, si no necesitáramos la matriz única.
Entonces, si todo lo que tuviéramos fuera esto,
y queríamos saber cuántas posiciones únicas hay,
entonces este año sería el camino a seguir.
Y lo mismo se podría hacer incluso contando,
cuántas letras diferentes hay en una cadena, correcto.
Porque un iterable,
o en realidad una cadena también es iterable.
Así que vamos a ver cuántas letras diferentes hay
están a mi nombre.
Y parece que hay 11.
Está bien. Así que como conclusión
a este video conjuntos no están destinados
para reemplazar matrices en absoluto.
Entonces, siempre que necesite almacenar valores en orden,
y que podría contener duplicados,
Siempre use matrices.
Eso también es cierto cuando necesitas
para manipular realmente los datos,
porque las matrices tienen acceso a muchas
de grandes métodos de matriz
que vamos a estudiar un poco más tarde.
Ahora los conjuntos tienen esta propiedad muy útil
de ser único.
Y también es muy fácil interactuar.
con conjuntos usando todos
de sus sencillos métodos.
Sin embargo, no son tan importantes como las matrices.
Así que ten en cuenta los conjuntos cuando necesites trabajar
con valores únicos.
Pero además de eso, puedes seguir usando arreglos.