- [Como crear un array vacío](#como-crear-un-array-vacío)
- [Como crear un array con valores](#como-crear-un-array-con-valores)
- [Creando un array usando split](#creando-un-array-usando-split)
- [Acceder a los elementos de un array usando el index](#acceder-a-los-elementos-de-un-array-usando-el-index)
- [Modificar elementos de array](#modificar-elementos-de-array)
- [Métodos para manipular arrays](#métodos-para-manipular-arrays)
- [Constructor de arrays](#constructor-de-arrays)
- [Creando valores estáticos con fill](#creando-valores-estáticos-con-fill)
- [Concatenación de arrays usando concat](#concatenación-de-arrays-usando-concat)
- [Obtener la longitud de array](#obtener-la-longitud-de-array)
- [Obtener el index de un elemento en un array](#obtener-el-index-de-un-elemento-en-un-array)
- [Obtener el último index de un elemento en un array](#obtener-el-último-index-de-un-elemento-en-un-array)
- [Comprobar un array](#comprobar-un-array)
- [Convertir array a string](#convertir-array-a-string)
- [Unir elementos de un array](#unir-elementos-de-un-array)
- [Cortar elementos de un array](#cortar-elementos-de-un-array)
- [Método splice en un array](#método-splice-en-un-array)
- [Agregar elementos a un array usando push](#agregar-elementos-a-un-array-usando-push)
- [Eliminar el último elemento usando pop](#eliminar-el-último-elemento-usando-pop)
- [Eliminar elemento al principio](#eliminar-elemento-al-principio)
- [Añade un elemento al inicio](#añade-un-elemento-al-inicio)
- [Invertir orden de un array](#invertir-orden-de-un-array)
- [Ordenar elementos en un array](#ordenar-elementos-en-un-array)
- [Array de arrays](#array-de-arrays)
- [💻 Ejercicios](#💻-ejercicios)
- [Ejercicios: Nivel 1](#ejercicios-nivel-1)
- [Ejercicios: Nivel 2](#ejercicios-nivel-2)
- [Ejercicios: Nivel 3](#ejercicios-nivel-3)
# 📔 Día 5
## Arrays
A diferencia de las variables, un array (matriz ó arreglo) puede almacenar _múltiples valores_.Cada valor en un array tiene un _index_ y cada index (índice) tiene _una referencia en una dirección de memoria_. Se puede acceder a cada valor usando sus _index_. El index de un array comienza desde _cero_, y el index del último elemento es menor a uno desde la longitud del array.
Un array es una colección de diferentes tipos de datos que están ordenados y son cambiables (modificables). Un array permite almacenar elementos duplicados y diferentes tipos de datos. Un array puede estar vacío o puede tener diferentes valores de diferentes tipos de datos.
### Como crear un array vacío
En JavaScript, podemos crear una array de diferentes maneras. Veamos diferentes formas de crear un array.
Es muy común usar _const_ en lugar de _let_ para declarar una variable array. Si está utilizando const, significa que no volverás a utilizar ese nombre de variable.
- Usando el constructor de arrays
```js
// sintaxis
const arr = Array();
// or
// let arr = new Array()
console.log(arr); // []
```
- Usando corchetes([])
```js
// sintaxis
// Esto es lo más recomendable para crear una lista vacía
const arr = [];
console.log(arr);
```
### Como crear un array con valores
Array con valores iniciales. Usamos _length_ para encontrar la longitud del array.
Como hemos visto en la sección anterior, podemos dividir un string en diferentes posiciones y podemos cambiar a un array. Veamos los ejemplos a continuación
### Acceder a los elementos de un array usando el index
Accedemos a cada elemento en un array usando su index. El index de un array comienza desde 0. La siguiente imagen muestra claramente el index de cada elemento en un array
Existen diferentes métodos para manipular un array. Estos son algunos de los métodos disponibles para manejar arrays:_Array, length, concat, indexOf, slice, splice, join, toString, includes, lastIndexOf, isArray, fill, push, pop, shift, unshift_
join: Se usa para unir los elementos del array, el argumento que pasamos en el método join se unirá en array y regresará como una cadena. De forma predeterminada, se une con una coma, pero podemos pasar diferentes parámetros de string que se pueden unir entre los elementos.
numbers.pop(); // -> eliminar un elemento del final
console.log(numbers); // -> [1,2,3,4]
```
#### Eliminar elemento al principio
shift: Eliminación de un elemento de un array al comienzo de un array.
```js
const numbers = [1, 2, 3, 4, 5];
numbers.shift(); // -> elimina un elemento del principio
console.log(numbers); // -> [2,3,4,5]
```
#### Añade un elemento al inicio
unshift: Agrega un elemento al inicio del array
```js
const numbers = [1, 2, 3, 4, 5];
numbers.unshift(0); // -> Añadir un elemento al inicio
console.log(numbers); // -> [0,1,2,3,4,5]
```
#### Invertir orden de un array
reverse: invertir el orden de un array.
```js
const numbers = [1, 2, 3, 4, 5];
numbers.reverse(); // -> reverse array order
console.log(numbers); // [5, 4, 3, 2, 1]
numbers.reverse();
console.log(numbers); // [1, 2, 3, 4, 5]
```
#### Ordenar elementos en un array
sort: Ordena los elementos de un array en orden ascendente. Sort toma una función call back, Veremos cómo usamos sort con una función call back en las próximas secciones.
🌕 Tienes una energía ilimitada. Acabas de completar los desafíos del día 5 y llevas cinco pasos de tu camino hacia la grandeza. Ahora haz algunos ejercicios para tu cerebro y tus músculos.
## 💻 Ejercicios
### Ejercicios: Nivel 1
```js
const countries = [
"Albania",
"Bolivia",
"Canada",
"Denmark",
"Ethiopia",
"Finland",
"Germany",
"Hungary",
"Ireland",
"Japan",
"Kenya",
];
const webTechs = [
"HTML",
"CSS",
"JavaScript",
"React",
"Redux",
"Node",
"MongoDB",
];
```
1. Declara un array _vacío_.
2. Declara un array com mas de 5 elementos.
3. Encuentra la longitud de tu array.
4. Obtenga el primer elemento, el elemento del medio y el último elemento de un array.
5. Declara un array llamado _mixedDataTypes_, coloque diferentes tipos de datos en el array y encuentre la longitud del array. El tamaño del array debe ser mayor que 5.
6. Declare un variable array de nombre _itCompanies_ y asignarles valores iniciales Facebook, Google, Microsoft, Apple, IBM, Oracle y Amazon.
7. Imprima el array usando _console.log()_.
8. Imprima el número de empresas en el array.
9. Imprime la primer empresa , la intermedia y la última empresa
10. Imprime cada empresa.
11. Cambie el nombre de cada empresa a mayúsculas uno por uno e imprímalos.
12. Imprime el array como una oración: Facebook, Google, Microsoft, Apple, IBM, Oracle y Amazon son grandes empresas de TI.
13. Compruebe si existe una determinada empresa en el array itCompanies. Si existe, retorna la empresa; de lo contrario, retorna la empresa _no existe_
14. Filtre las empresas que tienen más de una 'o' sin el método _filter()_
15. Ordene el array usando el método _sort()_
16. Invierte la array usando el método _reverse()_
17. Cortar las primeras 3 empresas del array
18. Cortar las últimas 3 empresas del array
19. Cortar la empresa o empresas intermedias de TI del array
20. Eliminar la primera empresa de TI del array
21. Eliminar la empresa o empresas intermedias de TI del array
22. Elimine la última empresa de TI del array
23. Eliminar todas las empresas de TI
### Ejercicios: Nivel 2
1. Cree un archivo de countries.js separado y almacene el array de países en este archivo, cree un archivo separado web_techs.js y almacene el array de webTechs en este archivo. Acceda a ambos archivos en el archivo main.js
1. Primero elimine todos los signos de puntuación y cambie de string a array y cuente el número de palabras en el array
```js
let text =
"I love teaching and empowering people. I teach HTML, CSS, JS, React, Python.";
- Agregue 'Meat' al comienzo de su carrito de compras si aún no se ha agregado
- Agregue 'Sugar' al final de su carrito de compras si aún no se ha agregado
- Elimine 'Honey' si es alérgico a la miel (honey)
- Modificar Tea a 'Green Tea'
1. En el array de países, verifique si 'Ethiopia' existe en el array si existe, imprima 'ETHIOPIA'. Si no existe agregar a la lista de países.
1. En el array webTechs, verifique si Sass existe en el array y si existe, imprima 'Sass es un preproceso de CSS'. Si no existe, agregue Sass al array e imprima el array.
1. Concatene las siguientes dos variables y guardelas en una variable fullStack.