No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

12 Días
6 Hrs
51 Min
31 Seg

Colección de colecciones

20/23
Recursos

Aportes 15

Preguntas 1

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Usando el método reduce para simplificar la suma

void main(){
Map<String, dynamic> restaurant = {
    "name": "Luis's chickens",
    "starts": [5, 4, 3, 4, 2]
  };

  if (restaurant['starts'] != null) {
    restaurant['score'] =
        restaurant['starts'].reduce((int sum, int start) => sum + start) /
            restaurant['starts'].length;
  }

  print(restaurant);
  print(restaurant.keys);
  print(restaurant.values);
}

Spread Operator (…)

Los 3 puntos que usamos en esta clase se llama Spread Operator y para los que gusten conocer más al respecto les comparto la documentación: https://dart.dev/guides/language/language-tour#spread-operator

Colleciones a unir:

List<String> primaryColors = ["red", "yellow", "blue"];
List<String> secondaryColors = ["purple", "green", "orange"];

Map colección anidada sacar la media para calificación estrellas restaurante

```js void main() { Map restaurante = { "nombre": "Pollos del monte", "estrellas": [5, 4, 3, 4, 2] }; print(restaurante); if(restaurante['estrellas'] == null) { print("El restaurante no tiene estrellas"); } else { List<int> estrellas = restaurante["estrellas"]; int suma = 0; for(int i = 0; i < estrellas.length; i++) { suma += estrellas[i]; } double promedio = suma / estrellas.length; restaurante.addAll({"promedio": promedio}); } print(restaurante); } ```void main() {  Map restaurante = {   "nombre": "Pollos del monte",   "estrellas": \[5, 4, 3, 4, 2]  };    print(restaurante);    if(restaurante\['estrellas'] == null) {    print("El restaurante no tiene estrellas");  } else {    List\<int> estrellas = restaurante\["estrellas"];    int suma = 0;    for(int i = 0; i < estrellas.length; i++) {      suma += estrellas\[i];    }    double promedio = suma / estrellas.length;    restaurante.addAll({"promedio": promedio});  }  print(restaurante);}

Mi Aporte

Utilizando el método forEach() para recorrer de una mejor manera una lista.

void main() {
  Map<String, dynamic> restaurante;
  restaurante = {
    "nombre": "Pollos del monte",
    "estrellas": [5, 4, 3, 4, 2]
  };

  if (restaurante["estrellas"] != null) {
    List<int> estrellas = restaurante["estrellas"];
    int suma = 0;

    estrellas.forEach((el) => suma += el);

    double promedio = suma / estrellas.length;
    restaurante.addAll({"promedio": promedio});
  }
}
Es una buena práctica usar una nueva variable para la unión de las 2 colecciones, así mantenemos su valor inicial de ambas para poder usarla de manera propia, quizás en otras funcionalidades.

Colección de colecciones

ℹ️ Definición
Se dice que una colección de colecciones, es aquel objeto el que sus valores poseen el tipo object o dynamic, según sea el caso.

.

Promedio de una lista

Sea un mapa de conductor que posee como atributos un nombre ( name) y calificaciones (scores), obtenga el promedio globlabl de dicho mapa.

  final Map<String, dynamic> driver = {
    'name': 'Frank Mendoza',
    'scores': [5, 4, 3, 4, 2]
  };

  final List<int> scores = driver['scores'];
  final scoresLenght = scores.length;
  final scoreTotal = scores.reduce((int total, int value) => total + value);
  final average = scoreTotal / scoresLenght;
  print("""
  Driver: ${driver['name']}
  Rate Average: ⭐️ $average
  """);

Código de Colecciones Anidadas:

void main() {
  Map restaurante = {
    "nombre": "Pollos del Monte",
    "estrellas": [5, 4, 3, 4, 2]
  };

  print(restaurante);

  if (restaurante["estrellas"] == null) {
    print("El restaurante no tiene estrellas");
  } else {
    List<int> estrellas = restaurante["estrellas"];
    int suma = 0;
    for (int i = 0; i < estrellas.length; i++);
    {
      suma += estrellas[i];
    }
    double promedio = suma / estrellas.length;
    print(promedio);
  }
}

Código de Unión deColecciones:

void main () {
  List<String> coloresPrimarios = ["amarillo", "azul", "rojo"];
  
  List<String> coloresSecudarios = ["verde", "morado", "naranja"];
  
  coloresSecudarios.addAll(coloresPrimarios);
  
  print (coloresSecudarios);
}
````

Aplicando lo aprendido

void main() {
  Map<String, dynamic> restaurante = {
    'nombre': 'Pollos Locos',
    'estrellas': [2,4,6,8],
  };

  int suma = 0;
  List<int> estrellas=[];
 
  print(restaurante);

  if (restaurante['estrellas'] == null) {
    print("El restaurante no tiene estrellas");
  } else {
    print("El restaurante si tiene estrellas");
    estrellas = restaurante['estrellas'];
    print(estrellas);
    for (int i = 0; i < estrellas.length; i++) {
      suma += estrellas[i];
    }

    double promedio = suma / estrellas.length;
    promedio = double.parse(promedio.toStringAsFixed(2));
    print(promedio);
    
    restaurante.addAll({'promedio': promedio});
     List<int> estrellas2=[1,3,5,7,9,...estrellas];
       print(estrellas2);
}
   print(restaurante);

}

Les comparto mi código del restaurante:

void main() {
  //Coleccion de coleciones
  Map restaurante = {
    'nombre': 'Pollos Locos',
    'estrellas': [1,2,3,5,2,4]
  };
  
  print(restaurante);
  
  if(restaurante['estrellas'] == null) {
    print('El restaurante no tiene calificaciones aún');
  } else {
    //Guardando la lista en una variable aparte
    List <int> estrellas = restaurante['estrellas'];
    //Obteniendo el total de las estrellas
    final suma = estrellas.reduce((value, element) => value + element);
    //Obteniendo el promedio
    double promedio = suma / estrellas.length;
    //Limitando la cantidad de decimales
    String promFinal = promedio.toStringAsFixed(2);    
    //añadiendo el promedio al arreglo tipo Map
    restaurante.addAll({'promedio': promFinal});
    print(restaurante);
  }
}

Se pueden unir dos o más colecciones mediante la implementación del spread operator así es como se le llama a los 3 puntos que se colocan antes del nombre de la lista. También existe el null-aware spread operator es muy similar, pero termina con un signo de interrogación

...
List<String> joinedList=[...listA, ...?listB];

Esto es para validar si la lista a desempaquetar es un elemento nulo y de esta manera evitar errores al compilar el código.

Dejo enlace a la documentación oficial

Mi aporte:

<void main() {
  List<String> coloresPrimarios = [
    "rojo",
    "amarillo",
    "azul"
  ];
  
  List<String> coloresSecundarios = [
    "morado",
    "verde",
    "naranja",
    //...coloresPrimarios
  ];
  
  List<String> colores = [
    ...coloresPrimarios,
    ...coloresSecundarios
  ];
  
  //coloresSecundarios.addAll(coloresPrimarios);
  
  print(coloresPrimarios);
  print(coloresSecundarios);
  print(colores);
}> 

La colección inicial del restaurante

Map restaurant = {
    "name": "Pollos del Monte",
    "starts": [5, 4, 3, 4, 2]
};