Con mi Javascript a continuación, estoy definiendo una matriz JSON como una variable:

var json =     [
  {
        "pk": 981,
        "name": "Uruguay",
        "distributor": {
            "id": 28,
            "name": "Store 1",
            "email": "CustomService@example.com",
            "phone": "",
            "site": "",
            "ownership": 1,
            "shipping_cost": 1600,
            "fulfilled": false,
            "items": [
                213,
                215,
                217
            ]
        }
    },
    {
        "pk": 982,
        "name": "US Minor Outlying Islands",
        "distributor": {
            "id": 31,
            "name": "International",
            "email": "CustomerService@example.com",
            "phone": "1231231234",
            "site": "http://www.example.com",
            "ownership": 1,
            "shipping_cost": 1600,
            "fulfilled": false,
            "items": [
                213,
                215,
                217
            ]
        }
    },
    {
        "pk": 983,
        "name": "Uzbekistan",
        "distributor": {
            "id": 31,
            "name": "International",
            "email": "CustomerService@example.com",
            "phone": "1231231234",
            "site": "http://www.example.com",
            "ownership": 1,
            "shipping_cost": 1600,
            "fulfilled": false,
            "items": [
                213,
                215,
                217
            ]
        }
    }
  ];

Luego intento utilizar la función each de jQuery y una referencia de valor en el campo pk para registrar el nombre valor de campo a la consola.

$.each(json.pk, function(i, v) {
    if (v.pk == 981) {
        console.log(v.name);
        return;
    }
});

He intentado numerosas variaciones de esto, pero parece que nunca puedo activar el condicional que me permitiría consolar los valores de registro. ¿Qué estoy haciendo mal?

-1
sparecycle 28 feb. 2018 a las 14:08

3 respuestas

La mejor respuesta

¿Has intentado de esta manera?

$.each(json, function(i, v) {
    if (v.pk == 980) {
        console.log(v.name);
        return;
    }
});
2
Rafael Paulino 28 feb. 2018 a las 11:11

Debe pasar json en $each en lugar de json.pk

var json =     [
  {
        "pk": 981,
        "name": "Uruguay",
        "distributor": {
            "id": 28,
            "name": "Store 1",
            "email": "CustomService@example.com",
            "phone": "",
            "site": "",
            "ownership": 1,
            "shipping_cost": 1600,
            "fulfilled": false,
            "items": [
                213,
                215,
                217
            ]
        }
    },
    {
        "pk": 982,
        "name": "US Minor Outlying Islands",
        "distributor": {
            "id": 31,
            "name": "International",
            "email": "CustomerService@example.com",
            "phone": "1231231234",
            "site": "http://www.example.com",
            "ownership": 1,
            "shipping_cost": 1600,
            "fulfilled": false,
            "items": [
                213,
                215,
                217
            ]
        }
    },
    {
        "pk": 983,
        "name": "Uzbekistan",
        "distributor": {
            "id": 31,
            "name": "International",
            "email": "CustomerService@example.com",
            "phone": "1231231234",
            "site": "http://www.example.com",
            "ownership": 1,
            "shipping_cost": 1600,
            "fulfilled": false,
            "items": [
                213,
                215,
                217
            ]
        }
    }
  ];
  
  $.each(json, function(i, v) {
    if (v.pk == 981) {
        console.log(v.name);
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
0
Sanchit Patiyal 28 feb. 2018 a las 11:11

Se puede navegar fácilmente en el objeto JSON siempre que json sea de tipo Array.

$.each(json, function (key, value) {
    console.log((key + 1), value);
});

Demo

0
Shashank 28 feb. 2018 a las 11:16