No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Colecci贸n de colecciones

20/23
Recursos

Aportes 14

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

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

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]
};