Mostrar un elemento de un JSON con un ID

publicado por: Anonymous

¿Cómo puedo mostrar la iP que pertenece a un “ip_id” dentro de elementos?.

data.json

{
"json": [{
    "list_ip": [{
        "1": "190.15.20.18",
        "2": "10.10.10.100",
        "3": "10.20.30.40"
    }],
    "cosas": [{
        "elementos": [{
                "ip_id": 1
            },
            {
                "ip_id": 3
            }
        ]
    }]
}]

}

javascript

    $.each( data.json, function(index_json, valores ) {

      $.each(valores.cosas.elementos, function(index_elementos, valores_elementos){
        /*Aqui se debería mostrar la IP que pertenece a ese ip_id*/
        /*por ejemplo = "190.15.20.18"*/
        console.log(valores_elementos.ip_id:1);
      });
    });

Resultado:

190.15.20.18

solución

No veo la complicación. Si como dices, siempre los datos están al mismo nivel, basta con:

  1. Obtener la lista de ips.
  2. Obtener el array de elementos.
  3. Realizar un foreach para agregar a un nuevo objeto, los ips encontrados de acuerdo al id_ip de cada objeto dentro de elementos.

_x000D_

_x000D_

const data = {_x000D_
  "json": [_x000D_
    {_x000D_
      "list_ip": [_x000D_
        {_x000D_
          "1": "190.15.20.18",_x000D_
          "2": "10.10.10.100",_x000D_
          "3": "10.20.30.40"_x000D_
        }_x000D_
      ],_x000D_
      "cosas": [_x000D_
        {_x000D_
          "elementos": [_x000D_
             {_x000D_
               "ip_id": 1_x000D_
             },_x000D_
             {_x000D_
               "ip_id": 3_x000D_
             }_x000D_
          ]_x000D_
        }_x000D_
      ]_x000D_
    }_x000D_
  ]_x000D_
};_x000D_
_x000D_
_x000D_
function mapIPs() {_x000D_
  const ips = data.json[0].list_ip[0];_x000D_
  const els = data.json[0].cosas[0].elementos;_x000D_
  const associations = {};_x000D_
  _x000D_
  els.forEach(el => {_x000D_
    for(let [key, val] of Object.entries(el)) {_x000D_
      if (ips[val]) {_x000D_
        associations[val] = ips[val];_x000D_
      }_x000D_
    }_x000D_
  });_x000D_
  _x000D_
  return associations;_x000D_
}_x000D_
_x000D_
console.info(mapIPs());

_x000D_

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *