some, every e includes en JavaScript

Clase 18 de 24Curso de Manipulación Avanzada de Datos con JavaScript

Resumen

Con una base sólida en map, filter y reduce, es posible resolver la mayoría de tareas con arrays; sin embargo, métodos como some, every e includes hacen la sintaxis más clara y la validación más directa. Aquí verás cómo aplicar estas funciones para comprobar condiciones en datos reales, tanto en arrays como en strings, y cómo combinarlas en un buscador simple.

¿Qué resuelven some, every e includes en JavaScript?

Estos métodos simplifican comprobaciones frecuentes devolviendo solo true o false. Son ideales para validaciones y operaciones condicionales rápidas sin calcular posiciones ni transformar colecciones completas. Si necesitas localizar un elemento o su índice, recurres a find o findIndex; si buscas transformar, usas map; si quieres agrupar o aplanar, existen groupBy y flatMap.

  • some: verifica si al menos un elemento cumple la condición. Devuelve booleano.
  • every: valida si todos los elementos cumplen la condición. Devuelve booleano.
  • includes: comprueba si existe un valor en un array o si un string contiene un texto. Devuelve booleano.
  • Casos de uso: validación de datos, verificación de duplicados, control de estado completado, mini búsqueda por texto.

¿Cómo usar some y every para validar arrays?

Ambos métodos se parecen a un filtro lógico: no transforman ni devuelven el elemento, solo confirman si la condición se cumple. Son prácticos cuando basta con saber si “existe” o si “todos cumplen”.

¿Cómo aplicar some para saber si existe al menos uno?

Cuando quieres validar algo como “¿ya existe este nombre?” o “¿hay alguien con 21 años?”, some es directo. Si necesitas la posición, combínalo con findIndex.

// Usuarios de ejemplo const users = [ { name: 'John', age: 20 }, { name: 'Ana', age: 22 }, { name: 'Luis', age: 21 } ]; // ¿Hay alguien con 21 años? const has21 = users.some(u => u.age === 21); // true // Si quitamos al que tiene 21, devolvería false.

Uso típico en validaciones de duplicados:

const habits = ['hacer la cama', 'leer', 'beber agua']; const newHabit = 'hacer la cama'; const exists = habits.some(h => h === newHabit); // true: no crear duplicado.

¿Cuándo usar every para verificar que todos cumplen?

Si el requisito es global, como “todos completados” o “todos mayores de 18”, every concentra la lógica en una sola expresión.

// Tareas de ejemplo const todos = [ { text: 'lavar platos', completed: true }, { text: 'sacar la basura', completed: true }, { text: 'regar plantas', completed: true } ]; const allCompleted = todos.every(t => t.completed); // true // Si una tarea no está completada, el resultado sería false.

¿Cómo verificar existencia con includes en arrays y strings?

includes funciona tanto en arrays como en strings. En arrays, indica si un elemento está presente. En strings, confirma si una cadena contiene otra, útil para un mini motor de búsqueda por texto.

¿Cómo comprobar elementos en arrays con includes?

const fruits = ['apple', 'banana', 'cherry']; const hasApple = fruits.includes('apple'); // true const hasGrape = fruits.includes('grape'); // false

¿Cómo buscar texto dentro de strings con includes?

const saludo = 'Hola, mundo'; saludo.includes('hola'); // false: diferencia entre mayúsculas y minúsculas. const frase = 'hacer la cama'; frase.includes('cama'); // true

¿Cómo crear un buscador multicriterio con some, every e includes?

Construye funciones pequeñas y reusables sobre una colección con título, contenido, tags y estado publicado. La idea es combinar filter, some, every e includes según el criterio.

// Colección de ejemplo const articles = [ { title: 'Hábitos mañaneros', content: 'hacer la cama y beber agua', tags: ['salud', 'hogar'], published: true }, { title: 'Rutina de noche', content: 'leer y planificar', tags: ['productividad'], published: false }, { title: 'Orden en casa', content: 'cama y cocina', tags: ['hogar'], published: true } ]; // 1) Buscar por keyword en título o contenido const buscarPorKeyword = (items, keyword) => items.filter(a => a.title.includes(keyword) || a.content.includes(keyword)); // 2) Filtrar por tag obligatorio (si no lo tiene, se descarta) const filtrarPorTag = (items, tag) => items.filter(a => Array.isArray(a.tags) && a.tags.includes(tag)); // 3) Solo publicados const soloPublicados = items => items.filter(a => a.published === true); // 4) Búsqueda multicriterio combinando some/every/includes const buscar = ({ keyword, tagObligatorio, exigirPublicados }) => { let result = [...articles]; if (exigirPublicados) result = soloPublicados(result); if (keyword) result = buscarPorKeyword(result, keyword); if (tagObligatorio) result = filtrarPorTag(result, tagObligatorio); // Ejemplo extra: todos los tags deben tener longitud > 2 const validTags = r => r.every(a => a.tags && a.tags.every(t => t.length > 2)); return validTags(result) ? result : []; }; // Ejemplo de uso buscar({ keyword: 'cama', tagObligatorio: 'hogar', exigirPublicados: true });

¿Tienes un caso real de validación o búsqueda que quieras optimizar con some, every e includes? Cuéntalo y probamos juntos variantes del enfoque.