This graph shows how many times the word ______ has been mentioned throughout the history of the program.
Hoy vamos a aprender
¿Cuál es la definición de truncar?
Amigos, bienvenidos a vuestra clase de literatura favorita
La Elmidu Castellano
Hoy en Elmidu Castellano vamos a aprender qué es truncar
¿Truncar? ¿Qué significará truncar exactamente?
Truncar es como, yo sé, romper algo
Suena, suena a romper algo
No, truncar lo que es exactamente
Truncar significa acortar
Acortar algo que normalmente debería tener otra longitud preestablecida
¿Cuándo se utiliza truncar?
Por ejemplo, se utiliza truncar cuando estamos hablando de jugadores de fútbol
¿Sabes cuando un jugador de fútbol tiene una progresión buena?
Que dices, madre mía, ¿cómo marca goles este hombre?
Madre mía, esta mujer es la bestia, es brutal
Y se lesiona
¿Qué ha pasado?
Que se ha truncado su progresión
O se ha truncado su carrera
Porque su carrera se esperaba que fuese de una dimensión
Y de repente, a tomar por culo dimensión
A tomar por saco la carrera
Se ha truncado la carrera
Y por lo tanto se ha acortado
¿Vale?
Y eso, acortar
Truncar
Truncar
Es lo que vamos a hacer con el array
Porque también se puede truncar un array
O sea, si un array es de 6 posiciones
Y dices, quiero truncar el array
Lo que quiere decir es que
Vamos a hacerlo más pequeñito
Vamos a mejor recuperar solo 2 posiciones
3 posiciones, 4 posiciones
¿Vale?
Así que ya sabes, amigo
Lo que es truncar
Espero que te haya servido
Y a partir de ahora
Lo sepas
Vale, pues ya está
Esa sea la sección de hoy
¿Vale?
Pero ya no enseña
Ahora enseño castellano, sí
No, estamos enseñando
Cómo truncar un array
¿Vale?
Ahora que ya sabes lo que es truncar
En base de datos también se utiliza
Que lo estáis comentando por ahí
Y efectivamente también se utiliza
Venga
Pues el tema
Si le pasas un número negativo
¿Qué pasa?
Bueno, ahora lo probamos
Zamblar quiere truncar
Bueno, eso ya es un poco chungo
¿Vale?
Entonces
Entonces
Entonces
Tenemos aquí los numbers
2, 4, 6 y 8
Numbers.leg
El tema es
Cuando tú recuperas el numbers.length
Pues ya te dice
La longitud que tendría el array
¿Vale?
En este caso
Si tú pones numbers.length
Y le pondríamos 2
Lo que va a hacer es truncar
El array
¿Y qué quiere decir esto?
Pues que si yo le digo
Cuál es la longitud
Que tiene que tener el array ahora
Si ahora miramos
Lo que tenga numbers
Lo que vamos a ver
Es que numbers
Se ha truncado
¿Vale?
Numbers se ha truncado
Y ahora es más corto
Se ha quedado con las dos primeras posiciones
Directamente
¿Vale?
Así que
Ya lo teníamos aquí
Hay mucha gente que no lo sabe
¿No?
Hay mucha gente que cree
Que el .length
Solo es un getter
Pero resulta que también es un setter
Lo cual es bastante curioso
Y es bastante
O sea
Y funciona bien
Quiero decir
El numbers
Ha cambiado
La longitud
Real
O sea
Si ahora miramos
El numbers.length
Pues veremos que es 2
Y además
Los elementos que están fuera del array
Que han quedado fuera
De este nuevo array
Tenerte en cuenta
Que esto muta el array
¿Vale?
Pero el 6 y el 8
Han terminado
En el garbage collector
Esto quiere decir
Que se ha limpiado bien
¿Vale?
O sea
Que no es que se queda en el limbo
Y hay un memory leak
Y cosas así
No
Sino que lo que está pasando aquí
Es que está funcionando bien
En el sentido de que
Se liberan estos espacios de memoria
O sea
Que JavaScript
Funciona bastante
Sorpresivamente
Funciona bastante bien aquí
Entonces
Hay muchas veces
Que hay gente
Que te dice
Bueno
Recupera los 3 primeros elementos
Del array
Pues una forma muy fácil
Aparte que podrías utilizar
Por ejemplo
Numbers.slice
¿No?
Del 0 al 3
Y ya tendrías los 3 primeros elementos
Esto te daría una copia
¿Vale?
Una copia del array
Pero si no te importa la copia
Pues una cosa que puedes hacer
Es numbers
Punto length
Y quedarte
Con los 3
Y ahora numbers
Pues ya tendrías
3 elementos
Lo has
¿Cómo se llama?
Truncado
Efectivamente
Lo has truncado
Ahora
Me habéis preguntado
¿Qué pasa si pones un número negativo?
Bueno
Pues que te dice
Que es el range error
Por suerte
Te dice que está mal
¿Vale?
Que no es un número correcto
A lo cual
Tiene sentido
Y 0
Obviamente
Si que le puedes poner
Porque 0
Es un array vacío
Y ya lo tendrías
¿Vale?
Y si le intentas poner
Algo raro
Me imagino que petará
Porque no es un rango válido
Así que
Bueno
Ya lo sabéis
Que está bastante bien
Midu
¿Eso se debe a que en JavaScript
Las propiedades no son privadas?
A ver
En realidad
Las propiedades
Sí que son privadas
Como tal
O sea
Sí que hay propiedades privadas
O puedes hacer propiedades
Que no sean de escritura
Que no se puedan escribir
Esto es simplemente
Porque está hecho así
O sea
Esto está hecho a posta
Sí
O sea
Esto es una cosa
Que JavaScript
La hizo a posta
De que fuese así
Lo cual no está mal
Me parece que está
Que está bien
Ya está
Simplemente
Esto puedes
A ver
Muy buena pregunta
Muy buena pregunta
Porque claro
¿Qué pasa si le ponemos más?
Pues si le ponemos más
Lo que deberíamos ver
Realmente
Es que
Aunque no ha rellenado
Los espacios
De los elementos vacíos
En realidad
La longitud
Que tiene el array
Sí que es de 500
Pero
Pero
Ojo cuidado
¿Vale?
Porque
Fíjate que
Aquí tienes ahora
2, 4, 6, 8
Y 496
Espacios vacíos
Ya
Pero
Si por ejemplo
Haces un numbers for each
Te puedes encontrar
Que
Que no lo itera
500 veces
¿Vale?
Fíjate
¿Vale?
Así que
Ojo con esto
Porque si tú le cambias el length
Pero no tiene
O sea
El espacio está vacío
Y vacío quiere decir
No que es undefined
No que tiene un valor null
No
Es que no
O sea
Es totalmente vacío
Está hueco
Pues cuando tú lo intentas iterar
Con un for each
Como puedes ver
No lo lista
¿Vale?
No estaríamos viendo aquí
Los 500 elementos
Otra cosa
Y esto es bastante interesante
Con el tema de los arrays
Es que tú
Digas
Vale
Pues en numbers
Voy a meter en la posición 501
El hola
¿Vale?
Entonces ¿Qué pasa?
Aquí el numbers punto
Bueno
Si miramos numbers
Tenemos el hola
Bueno
He puesto hola
Como podría ser un número
Para seguir con el ejemplo
¿Vale?
¿Ves?
Aquí tenemos como
Como todos esos elementos vacíos
En mitad del array
El 10
Se ha quedado el último
Y luego lo que tendríamos
Cuando haces el for each
Es que se los salta
¿Vale?
O sea el for each
Se está saltando
Estos elementos vacíos
Huecos
¿Vale?
Entiéndelo por hueco
Más que por vacío
Porque por vacío
Puedes pensar que tenía
Undefined
Y en realidad es que
No tiene nada
Ese hueco
¿Vale?
Así que tendrías
2, 4, 6, 8 y 10
Y estas serían
Las 5 iteraciones
Que haría el array
Es bastante interesante esto
Y hay muchas veces
Que hay
Hay gente que esto
No lo entiende muy bien
Pero es eso
Hay que diferenciar esto
¿Vale?
De que tenga un hueco
Si después consultas
La longitud
¿Te da la que tiene valores
O todo el espacio vacío?
Todo el espacio vacío
Ahora si miramos
Numbers punto length
Lo que vamos a ver
Tiene 502
¿Vale?
O sea
¿Por qué tiene 502?
Porque en la posición 501
Le he puesto el 10
En la posición 501
Pero hay que tener en cuenta
Que es del 0 al 501
¿Vale?
Por eso
Tenemos 502
Porque es 501
Más la posición 0
¿Vale?
Entonces
En el length
Lo que tenemos es
La longitud de la array
Es esta
Pero en el for each
No lo vais a ver
Si que lo vais a ver
Por ejemplo
Si lo hacéis con un for
¿Vale?
Con un loop normal
Y os ponéis a iterar
Claro
Porque utilizáis el length
Entonces si que lo tendrías
¿Eh?
Y si el del 2
En el lugar 250
Se agrega a undefined
¿También se lo salta?
No
Entonces no se lo salta
Claro
Porque
O sea
Dices
Si yo pongo aquí
En el 250
Pones undefined
Entonces vamos a ver aquí
El undefined
¿Ves?
Lo ves aquí en medio
Esto lo voy a quitar
Para que lo veáis claro
Pero 2
4
4
6
8
En la 250
Tenemos undefined
Es que de verdad
Tened cuidado
Diferenciad entre
Sobre todo en el array
Cuando hagáis este tipo de cosas
En un
En un hueco
Una cosa es un hueco
Y otra cosa sería
Una posición que tiene undefined
Que serían dos cosas distintas
¿Vale?
Si es bastante mágico
El cómo funcionan los arrays
Los índices y tal
Pero bueno
A veces es bastante útil
Puede ser bastante útil
Sería como que asignan los registros
En memoria
Pero sin ningún valor
Efectivamente
Sacastro
Lo que tenemos aquí
Es que como los arrays
Son referencias
Lo que está haciendo aquí
Es como guardar
Los huecos en memoria
De este array
Pero ese hueco en memoria
No tiene nada asignado
Por lo tanto
Cuando haces el for each
Pues directamente se lo salta
Porque no hay nada
Nada asignado
Y cuando decimos nada
Es nada
No un undefined
Es un nada
¿Vale?
Tiene pinta de una asignación
De un número mayor
Por error
Podría llevar errores
Y luego algo depende del lens
Esperando que no tenga huecos
Bueno totalmente
Claro
O sea esto
Podría ser un mega problema
Si le haces un map
Vamos a tener el mismo problema
¿Vale?
O sea si hacemos un map
Le pasa exactamente lo mismo
Que al for each
Entonces podemos hacer un map
Pero claro
Si hacemos un map
Ahora el numbers
Vamos a ver
Que el numbers
Lo ha hecho más chiquitito
Ya veréis
Ah no aquí
Espérate que la
La hemos liado
La hemos liado
Ah pues no mira
Pues si que
Si que
Lo está teniendo
Oye
Espérate
Porque me parece
Que a lo mejor
No es verdad
Lo que he dicho
Espérate
Pero estaba bastante seguro
Y ahora con eso
Me ha dejado un poco loco
No
¿Ves?
Claro
Claro
Claro
Claro
Lo que pasa
Lo que pasa
Claro
Claro
Si que tiene sentido
Claro
Ahora
Ahora
Ahora lo he entendido
Si si
Lo que decía yo
Tiene sentido
Porque lo he hecho 80 veces
80 mil veces
Pero porque
Cuando vuelvo a hacer el map
Claro
Está interesante
Porque cuando vuelvo a hacer el map
Me vuelve a dejar los empty items
Claro
Tened en cuenta que el map
Guarda la posición
De cada elemento
¿Vale?
Cada posición del elemento
La vuelvo a guardar
Por lo tanto
Si yo mapeo el numbers
A B
Este sería
Another
Numbers
¿Vale?
Y miramos
Another numbers
Vais a ver
Que seguimos teniendo
Seguimos teniendo
Y aquí lo tenéis
Seguimos teniendo
Esto
Esto es porque es
Asíncrono
El console log
Y por eso se pone en medio
Pero lo que podéis ver aquí
Es que
El another numbers
Vuelve a tener
Los empty items
¿Y por qué pasa esto?
Bueno
Es verdad
Another
Other numbers
Other
Bueno
Numbers
Two
¿Vale?
Vale
Entonces
¿Por qué pasa esto?
Porque lo que está pasando
Exactamente
Es que
Lo está mapeando correctamente
Claro
La posición 1
Ha mapeado
La posición 2
Ha mapeado
Pero luego ha saltado
A la posición 250
Que tenían define
Y ha llegado aquí
Y entonces vuelve a pasar
Exactamente lo mismo
Por eso pasa
¿Vale?
Bueno
Ah es verdad
Es que no
Esperad
Esperad
¿Cómo podemos hacer esto?
Vale
Ya lo tenéis ahí
Esto
Pero bueno
Básicamente es lo mismo
Es exactamente lo mismo
Si le aplicas el set
A ese array
Joder
¿Cuántas pruebas queréis?
Queréis un montón de
Vale
New set
Numbers
Two
Vale
Vamos a ponerle aquí esto
Vale
Vale
Vamos a poner
Console log
De esto
Vale
Pues lo que hace el set
Obviamente es que
Remueve los huecos
Quita los huecos
Los huecos
Midu jefe
¿A que en el diseño de directo
Me pides una pizza?
Sí
Me la vas a pedir tú a mí
Y veremos
Si
Vamos
O sea
¿Qué es esto?
¿Cómo te voy a pedir una pizza?
Acuéstate
Hombre
Encima
Si soy yo el que está aquí pasando
¡Hambre!
¿En qué tipo de proyectos he recomendado VanillaJS?
En el que no vean necesario utilizar React
Bueno
Con el set
Ya podéis ver que ha quitado todos los huecos
¿Vale?
Y el Undefined solo lo ha dejado una vez
Claro
Por eso lo ha salido una vez
Si lo pusiéramos dos veces
Aquí me imagino que también
Lo tendríamos una vez
Solo
¿Vale?
Pero ha quitado los huecos
Queda interesante
Vale
Pues