Estoy tratando de obtener un valor particular del archivo JSON que se proporciona a continuación. Aquí está mi código. Puedo recuperar todos los datos del mes y almacenarlos en una matriz llamada processed_json y estoy enfrentando un problema al recuperar ese valor particular D de todos los mapas.

var processed_json=new Array();
var processed_json1=new Array();
$.getJSON("stack.json", function(data) {
    for (i = 0; i < data.Sheet1["Month"].length; i++){
        processed_json.push(data.Sheet1["Month"][i]);
        processed_json1.push(processed_json["D"]);
    }
}

El valor de D de todos los mapas debe almacenarse en una matriz

ESTE ES EL ARCHIVO JSON

2
Sudhanva c 27 feb. 2018 a las 16:38

3 respuestas

La mejor respuesta

Yo usaría Array.prototype.map para esto:

 var result = data.Sheet1.Month.map(function(obj){
    return Object.values(obj)[0]['D'];
});

Nuevo requisito de filtro

var result = data.Sheet1.Month.filter(function (month) {
    return Object.keys(month)[0] !== 'BL';
}).map(function(obj){
    return Object.values(obj)[0]['D'];
});    
2
28 feb. 2018 a las 14:51

Realiza el bucle a través de los resultados correctamente y ya guarda cada entrada en la sección "Mes" de JSON en la variable procesado_json

Entonces, cuando se refiere a datos. Hoja1 ["Mes"] [i], obtiene una referencia a una entrada como esta:

{"BL" : {
    "A" : 42,
    "B" : 19,
    "C" : 20,
    "D" : 11,
    "E" : 22,
    "F" : 44,
    "G" : 76,
    "H" : 12
  }
}

Por lo tanto, el único paso que queda es hacer una referencia a este objeto y luego a un campo D. Puede hacerlo en forma object.field u object ["field"].

for (i = 0; i < data.Sheet1["Month"].length; i++){
  var entry = data.Sheet1["Month"][i];
  for(var key in entry){
    if(key == "BL"){
          break;
    }
    var D = entry[key].D;
    processed_json1.push(D);
  }
}
0
adlerer 28 feb. 2018 a las 11:50

processed_json es una matriz, por lo tanto, como no tiene ninguna propiedad D, debe obtener el elemento dentro processed_json para acceder a D.

var processed_json=new Array();
var processed_json1=new Array();
$.getJSON("stack.json", function(data) {
for (i = 0; i < data.Sheet1["Month"].length; i++){
    var value = data.Sheet1["Month"][i];
    processed_json.push(value);
    processed_json1.push(value["D"]);
}
0
Serge K. 27 feb. 2018 a las 13:44