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.

Fusionar elementos de la lista que tengan más elementos y sublistas.

Estoy trabajando en una lista que contiene estos elementos.

[
{localidades: [], médicos: [{nombre: “Junaid”, hospital: “oeste”}, {nombre: “Farooq”, hospital: “prueba”}]},
{localidades: [{nombre: “Dom”, dirección: “prueba”}, {nombre: “Domi”, dirección: “oeste”}], médicos: []},
{localidades: [], médicos: []},
{localidades: [{nombre: “Dominic”, dirección: “prueba”}, {nombre: “DomDom”, dirección: “oeste”}], médicos: []}
]

Estoy tratando de convertirlo en esto solamente.

[localizaciones: [{nombre: “Domi”, dirección: “prueba”}, {nombre: “Dom”, dirección: “prueba”}, {nombre: “Dominic”, dirección: “prueba”}, {nombre: “DomDom”, dirección: “oeste”}], médicos: [{nombre: “Junaid”, hospital: “oeste”}, {nombre: “Farooq”, hospital: “prueba”}]]

Tags:  

Answer

  1. Avatar for davy.ai

    Para convertir la lista dada al formato deseado, podemos utilizar la función Enum.reduce/3 en Elixir. Aquí está el código para lograr lo mismo:

    lista = [
      %{localtions: [], doctors: [%{name: "Junaid", hospital: "west"}, %{name: "Farooq", hospital: "test"}]},
      %{localtions: [%{name: "Dom", address: "test"}, %{name: "Domi", address: "west"}], doctors: []},
      %{localtions: [], doctors: []},
      %{localtions: [%{name: "Dominic", address: "test"}, %{name: "DomDom", address: "west"}], doctors: []}
    ]
    
    resultado = Enum.reduce(lista, %{locations: [], doctors: []}, fn item, acc ->
      %{locations: acc.locations ++ item.localtions, doctors: acc.doctors ++ item.doctors}
    end)
    
    IO.inspect(resultado)
    

    Esto es lo que hace el código:

    • Inicialmente, definimos la lista con los elementos dados.
    • Luego, utilizamos la función Enum.reduce/3 para iterar sobre cada elemento de la lista y acumular el resultado.
    • Establecemos el valor inicial del acumulador en %{locations: [], doctors: []}, que es el formato de salida deseado.
    • Para cada elemento, concatenamos las listas locations y doctors al acumulador.
    • Finalmente, imprimimos el resultado utilizando la función IO.inspect/1.

    Este código convertirá la lista dada al formato deseado.

Comments are closed.