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 necesitas verificar que todos los elementos de una lista satisfagan un requisito específico. El método every() proporciona esta funcionalidad al comprobar cada elemento con tu condición y devolver 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 no supera la prueba, every() devuelve inmediatamente false. Solo cuando todos los elementos superan la prueba devuelve true.
List<int> examScores = [75, 82, 68, 91, 77];
// Comprueba si todos los estudiantes aprobaron (score > 60)
bool allPassed = examScores.every((score) => score > 60);
print(allPassed); // trueEste método es especialmente útil en situaciones de validación en las que necesitas asegurarte de que todos los elementos cumplan ciertos criterios antes de continuar. El método every() deja de comprobar en cuanto encuentra un elemento que no supera la prueba, lo que lo hace eficiente para listas grandes en las que necesitas que todos cumplan los requisitos.
Desafío
FácilCrea un programa que gestione un sistema de control de calidad verificando que todos los productos de un lote cumplan los estándares requeridos. Tu programa debe:
- Leer una entrada de tipo cadena que represente el nombre de la fábrica
- Leer varias entradas de tipo entero que representen las puntuaciones de calidad de los productos (la entrada finalizará cuando recibas
-1) - Leer una entrada de tipo 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 el estándar, o "Batch rejected - quality improvement required" si algún producto no cumple el requisito mínimo.
Pruébalo tú mismo
import 'dart:io';
void main() {
// Lee el nombre de la fábrica
String? factoryName = stdin.readLineSync();
// Lee las puntuaciones de calidad hasta encontrar -1
List<int> qualityScores = [];
while (true) {
int score = int.parse(stdin.readLineSync()!);
if (score == -1) {
break;
}
qualityScores.add(score);
}
// Lee el umbral mínimo
int minThreshold = int.parse(stdin.readLineSync()!);
// TODO: Escribe tu código a continuación
// Usa el método every() para comprobar si todas las puntuaciones cumplen el estándar mínimo
// Imprime los resultados en el formato requerido
print('Factory: $factoryName');
print('Quality scores: $qualityScores');
print('Minimum standard: $minThreshold');
print('Checking if all scores >= $minThreshold');
// Imprime si todos los productos aprobaron 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 únicaPractica por tu cuenta: Compilador de Dart online