Condiciones con 'every'
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 14 de 65.
Mientras que any() comprueba si al menos un elemento cumple una condición, a veces es necesario verificar que todos los elementos de una lista satisfacen un requisito específico. El método every() proporciona esta funcionalidad probando cada uno de los elementos con tu condición y devolviendo true solo si todos la cumplen.
El método every() toma una función de prueba que devuelve true o false para cada elemento. Si algún elemento falla la prueba, every() devuelve inmediatamente false. Solo cuando cada elemento pasa la prueba devuelve true.
List<int> examScores = [75, 82, 68, 91, 77];
// Comprobar si todos los estudiantes aprobaron (puntuación > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // trueEste método es particularmente útil para escenarios de validación en los que necesitas asegurarte de que todos los elementos cumplan con ciertos criterios antes de continuar. El método every() deja de comprobar tan pronto como encuentra un elemento que no supera la prueba, lo que lo hace eficiente para listas grandes donde se requiere un cumplimiento universal.
Desafío
FácilCrea un programa que gestione un sistema de control de calidad verificando que todos los productos de un lote cumplan con los estándares requeridos. Tu programa debe:
- Leer una entrada de tipo cadena que represente el nombre de la fábrica (factory name)
- Leer múltiples entradas de números enteros que representen las puntuaciones de calidad del producto (la entrada terminará cuando recibas
-1) - Leer una entrada de número entero que represente el umbral mínimo del estándar de calidad
- Usar el método
every()para comprobar si todas las puntuaciones de los productos son mayores o iguales al umbral mínimo - Imprimir los resultados del control de calidad en el formato exacto que se muestra a continuación
Por ejemplo, si el nombre de la fábrica es "Electronics Factory", las puntuaciones de calidad son 85, 92, 78, 88, 95, y el umbral mínimo es 75, tu programa debería mostrar:
Factory: Electronics Factory
Quality scores: [85, 92, 78, 88, 95]
Minimum standard: 75
Checking if all scores >= 75
All products passed: true
Status: Batch approved for shipmentSi el nombre de la fábrica es "Textile Mill", las puntuaciones de calidad son 68, 82, 74, 91, y el umbral mínimo es 70, tu programa debería mostrar:
Factory: Textile Mill
Quality scores: [68, 82, 74, 91]
Minimum standard: 70
Checking if all scores >= 70
All products passed: false
Status: Batch rejected - quality improvement requiredSi el nombre de la fábrica es "Food Processing", las puntuaciones de calidad son 95, 98, 92, y el umbral mínimo es 90, tu programa debería mostrar:
Factory: Food Processing
Quality scores: [95, 98, 92]
Minimum standard: 90
Checking if all scores >= 90
All products passed: true
Status: Batch approved for shipmentTu programa debe usar el método every() para verificar que todas las puntuaciones de calidad sean mayores o iguales al umbral mínimo. Muestra "Batch approved for shipment" si todos los productos cumplen con el estándar, o "Batch rejected - quality improvement required" si algún producto no cumple con el requisito mínimo.
Hoja de referencia
El método every() comprueba si todos los elementos de una lista cumplen una condición específica. Devuelve true solo si cada elemento supera la prueba, y false si algún elemento falla.
List<int> examScores = [75, 82, 68, 91, 77];
// Comprobar si todos los estudiantes aprobaron (score > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // trueEl método every() deja de comprobar tan pronto como encuentra un elemento que falla la prueba, lo que lo hace eficiente para listas grandes donde se necesita un cumplimiento universal.
Pruébalo tú mismo
import 'dart:io';
void main() {
// Leer el nombre de la fábrica
String? factoryName = stdin.readLineSync();
// Leer las puntuaciones de calidad hasta que se encuentre -1
List<int> qualityScores = [];
while (true) {
int score = int.parse(stdin.readLineSync()!);
if (score == -1) {
break;
}
qualityScores.add(score);
}
// Leer el umbral mínimo
int minThreshold = int.parse(stdin.readLineSync()!);
// TODO: Escribe tu código a continuación
// Usa el método every() para verificar si todas las puntuaciones cumplen con el estándar mínimo
// Imprimir los resultados en el formato requerido
print('Factory: $factoryName');
print('Quality scores: $qualityScores');
print('Minimum standard: $minThreshold');
print('Checking if all scores >= $minThreshold');
// Imprimir si todos los productos pasaron y el estado final
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única