Un array en JS es un conjunto de variables a las que accedemos a través de un índice. Si tenemos:
let tabla=[1,2,3,4]
tabla[0]–>1
tabla[1]–>2
tabla[2]–>3
tabla[3]–>4
Podemos recuperar el valor o modificarlo
Para recorrer un array podemos utilizar el bucle for de toda la vida. En los siguientes ejercicios vamos a usar el bucle for aunque no el if
1.- Una función arrayNumeros a la que le pasemos un número y nos devuelva un array desde el 1 hasta ese número. Ej: arrayNumeros(5)–>[1,2,3,4,5]
2.- Una función sumaArray a la que le pasemos un array de números y nos devuelva la suma de todos ellos. Ej: sumaArray([2,5,7])->14 (2+5+7)
3.- Una función arrayTotal a la que le pasamos dos arrays de números y nos devuelve los arrays juntos y ordenados de menor a mayor. Ej: arrayTotal([4,5],[1,2])–>[1,2,4,5] (nota: es más fácil de lo que parece)
En los siguientes sí que utilizamos el if
4.- Una función positivos a la que le pasamos un array de números y nos devuelve sólo los positivos. Ej: positivos([1,-2,5,2,-7])->[1,5,2]
5.- Una función estaOrdenado que nos devuelva true si le pasamos un array ordenado y false en caso contrario. Ojo, no que lo ordene, que nos diga si está ordenado. Ej: estaOrdenado([1,4,7])->true estaOrdenado([1,4,3])->false
function arrayNumeros (numero) {
// Inicializo el array a un array vacío y la manera es la siguiente:
const res = []
for (let i = 1; i <= numero; i++) {
res.push(i)
}
return res
}
function sumaArray (array) {
let suma = 0
for (let i = 0; i < array.length; i++) {
suma += array[i]
}
return suma
}
function arrayTotal (array1, array2) {
const res = array1.concat(array2)
// Equivalente: sort(function(a,b){return a-b})
res.sort((a, b) => a - b)
return res
}
function positivos (array) {
const res = []
for (let i = 0; i < array.length; i++) {
if (array[i] >= 0) {
res.push(array[i])
}
}
return res
}
// Primero ordenar y luego un recorrido y con un if miro si son iguales o no
// Recorrer el array y si hay dos elementos consecutivos que están desordenados->false y si llego al final
// Y no me he encontrado ningún caso está ordenado->true
// Tengo dos archivadores: original y la copia
// Cada archivador tiene n cajones
// ¿Tienen lo mismo?
// empiezo en el primer cajón y acabo en el último
// Abro el cajón del archivador 1 y abro el cajón del archivador 2
// ¿SOn diferentes?- > COn que haya un cajón que tenga un contenido diferente
function estaOrdenado (array) {
const copia = array.slice()
copia.sort((a, b) => a - b)
for (let i = 0; i < array.length; i++) {
// Yo en i voy teniendo valores consecutivos: 1,2,3,->posicion
// Yo en array[i] voy teniendo el contenido del array
// Yo en copia[i] voy teniendo el contenido de copia
if (array[i] != copia[i]) {
return false
}
}
return true
}
function estaOrdenado2 (array) {
// Empiezo en el 1 porque el 0 no tiene una posición anterior
for (let i = 1; i < array.length; i++) {
// array=[1,4,2] Si el 2 es menor que el 4 está desordenado
if (array[i] < array[i - 1]) {
return false
}
}
return true
}