es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Actualizar todos los valores en un mapa utilizando los valores de otro mapa (Elixir)

¿Cómo puedo actualizar todos los valores en un mapa, utilizando los valores de las claves correspondientes de otro mapa?
Por ejemplo, tengo los dos mapas a continuación:

map = %{"December 2021" => 0, "November 2021" => 0, "October 2021" => 0}
map_2 = %{"December 2021" => 7, "November 2021" => 6}

Y quiero actualizar todos los valores de map con los valores correspondientes de map_2, para que al final map sea igual a %{"December 2021" => 7, "November 2021" => 6, "October 2021" => 0}.

He intentado:

Enum.map(map_2, fn {key, value} -> %{map | k => v} end)

También he intentado el código anterior con otras funciones como Map.update!/3 y similares, pero todas devuelven una lista con mapas para cada iteración de Enum.map.

¿Alguien tiene alguna idea de cómo hacerlo?

Gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para actualizar todos los valores en un mapa utilizando los valores de las claves correspondientes de otro mapa, puedes utilizar la función Map.merge/3 en Elixir. Aquí tienes un ejemplo de código que muestra cómo lograr esto:

    map = %{"December 2021" => 0, "November 2021" => 0, "October 2021" => 0}
    map_2 = %{"December 2021" => 7, "November 2021" => 6}
    
    updated_map = Map.merge(map, map_2, fn _, value1, value2 -> value2 end)
    
    # El mapa actualizado será:
    # %{"December 2021" => 7, "November 2021" => 6, "October 2021" => 0}
    

    En este código, la función Map.merge/3 toma los dos mapas map y map_2 como sus dos primeros argumentos. El tercer argumento es una función de fusión que se utiliza para determinar el valor final de las claves que existen en ambos mapas. Aquí, estamos utilizando una función sencilla que devuelve el valor de map_2, lo cual actualizará los valores de las claves correspondientes en map con los valores de map_2.

    El mapa actualizado resultante tendrá todas las claves de ambos mapas con los valores actualizados.

Comments are closed.