Skip to content

Lección 21: Métodos de Arrays (Parte 3) — Búsqueda y Ordenación

Continuamos con más métodos de arrays, enfocándonos en búsqueda avanzada, ordenación y manipulación estructural de los datos.

find devuelve el primer elemento que cumple una condición. Si no encuentra, devuelve undefined.

let usuarios = [
{ id: 1, nombre: 'Ana' },
{ id: 2, nombre: 'Carlos' },
{ id: 3, nombre: 'María' }
];
let usuario = usuarios.find(function(u) {
return u.id === 2;
});
console.log(usuario); // { id: 2, nombre: 'Carlos' }

findIndex devuelve el índice del primer elemento que cumple la condición. Si no encuentra, devuelve -1.

let edades = [15, 22, 18, 30];
let indice = edades.findIndex(function(edad) {
return edad === 18;
});
console.log(indice); // 2

some devuelve true si al menos un elemento cumple la condición.

let temperaturas = [18, 22, 35, 28];
let hayCalor = temperaturas.some(function(t) {
return t > 30;
});
console.log(hayCalor); // true (35 es mayor que 30)

every devuelve true si todos los elementos cumplen la condición.

let notas = [85, 90, 78, 92];
let todosAprobados = notas.every(function(n) {
return n >= 60;
});
console.log(todosAprobados); // true

flat aplana arrays anidados a un nivel especificado.

let anidado = [1, [2, 3], [4, [5, 6]]];
console.log(anidado.flat()); // [1, 2, 3, 4, [5, 6]]
console.log(anidado.flat(2)); // [1, 2, 3, 4, 5, 6]

Combina map() y flat() en un solo paso.

let frases = ['Hola mundo', 'JS es genial'];
let palabras = frases.flatMap(function(frase) {
return frase.split(' ');
});
console.log(palabras); // ['Hola', 'mundo', 'JS', 'es', 'genial']

sort ordena el array modificándolo. Por defecto ordena como strings:

let numeros = [10, 5, 40, 25, 1000];
numeros.sort();
console.log(numeros); // [10, 1000, 25, 40, 5] (¡orden lexicográfico!)

Para ordenar números correctamente, usa una función comparadora:

numeros.sort(function(a, b) {
return a - b; // ascendente
});
console.log(numeros); // [5, 10, 25, 40, 1000]
// Descendente
numeros.sort(function(a, b) {
return b - a;
});
console.log(numeros); // [1000, 40, 25, 10, 5]
// Catálogo de productos
let productos = [
{ nombre: 'Laptop', precio: 25000, stock: 5 },
{ nombre: 'Mouse', precio: 500, stock: 20 },
{ nombre: 'Monitor', precio: 8000, stock: 3 },
{ nombre: 'Teclado', precio: 1200, stock: 15 }
];
// find: buscar producto por nombre
let mouse = productos.find(p => p.nombre === 'Mouse');
console.log('Mouse encontrado:', mouse);
// some: ¿hay productos con bajo stock?
let bajoStock = productos.some(p => p.stock < 5);
console.log('¿Hay bajo stock?', bajoStock);
// every: ¿todos tienen precio > 0?
let preciosValidos = productos.every(p => p.precio > 0);
console.log('Todos los precios válidos:', preciosValidos);
// sort: ordenar por precio ascendente
let porPrecio = [...productos].sort((a, b) => a.precio - b.precio);
console.log('Ordenado por precio:');
porPrecio.forEach(p => console.log(`${p.nombre}: $${p.precio}`));
// flatMap: extraer todas las palabras de títulos
let titulos = ['Laptop Gamer', 'Mouse RGB', 'Teclado Mecánico'];
let palabras = titulos.flatMap(t => t.split(' '));
console.log('Palabras:', palabras);
  1. Crea un archivo metodos-arrays-3.js.
  2. Declara un array de objetos personas con nombre y edad.
  3. Usa .find() para encontrar a la persona con nombre “Carlos”.
  4. Usa .some() para verificar si hay alguien mayor de 30.
  5. Usa .every() para verificar si todos son mayores de edad.
  6. Ordena las personas por edad ascendente con .sort().
  7. Usa .flatMap() para obtener un array con todas las letras de los nombres.
let personas = [
{ nombre: 'Ana', edad: 25 },
{ nombre: 'Carlos', edad: 32 },
{ nombre: 'María', edad: 18 },
{ nombre: 'Pedro', edad: 40 }
];
let carlos = personas.find(p => p.nombre === 'Carlos');
console.log('Carlos:', carlos);
let mayorDe30 = personas.some(p => p.edad > 30);
console.log('¿Alguien mayor de 30?', mayorDe30);
let todosMayores = personas.every(p => p.edad >= 18);
console.log('¿Todos mayores de edad?', todosMayores);
let porEdad = [...personas].sort((a, b) => a.edad - b.edad);
console.log('Ordenados por edad:', porEdad);
let letras = personas.flatMap(p => p.nombre.split(''));
console.log('Letras:', letras);

.sort() modifica el array original. Si quieres mantener el original intacto, haz una copia primero con el operador spread ([...array]) o .slice().

let original = [3, 1, 4, 1, 5];
let copia = [...original].sort();
console.log(original); // [3, 1, 4, 1, 5] (intacto)
console.log(copia); // [1, 1, 3, 4, 5] (ordenado)

Para ordenar strings alfabéticamente (considerando mayúsculas y tildes):

let palabras = ['ñandú', 'Ángel', 'zorro', 'éxito'];
palabras.sort((a, b) => a.localeCompare(b, 'es'));
console.log(palabras); // ['Ángel', 'éxito', 'ñandú', 'zorro']

.localeCompare() es la forma correcta de ordenar strings en español.