A todos, buenas tardes a todos,
Estoy tratando de acceder a los atributos de una matriz de objetos de JavaScript a través de ajax, pero no tengo éxito, ¿alguien puede ver dónde me estoy equivocando?
ingrese la descripción de la imagen aquí
Mi llamada ajax es así:
$("#cbx1").on("change", function() { var checkbox = $("#cbx1").val(); console.log(checkbox); if(checkbox == "TF") { var url = "/listar-perguntas?area-tematica=" + $(this).val() + "&montar-navegadores=true"; console.log("bateu aqui 1"+url); } else { var url = "/listar-perguntas?area-tematica=" + $(this).val(); console.log("bateu aqui 2"+url); } $.ajax({ type:'GET', data : "", url: url, contentType: "application/json; charset=utf-8", success: function(data) { console.log(data); let text = "<input>" for (let x in data) { text += "<label>" + data[x] + "</label>" } text += "</input>" document.getElementById("temaFederal").innerHTML = text; }, error: function(data){ console.log(data.statusText); } });});
En mi html se ve así:
Primero debe buscar el objeto en el que está almacenada su etiqueta. Eso está en la décima posición en la lista. Si el elemento va a estar siempre en la última posición, simplemente puede hacer data[data.length -1] y eso seleccionará el último objeto en su lista en el nivel raíz. Una vez que haya seleccionado el objeto, deberá hacer data[data.length - 1]?.teamnavigator?.bucket y eso le dará la lista en la que se almacenan sus etiquetas. Ahora puede iterar sobre esta lista.
De lo contrario, puede buscar primero el elemento y luego obtener su lista de deseos como esta
const data = [ { pergunta: 'lorem ipsum', guid: '1111'}, { pergunta: 'lorem ipsum', guid: '1111'}, { pergunta: 'lorem ipsum', guid: '1111'}, { pergunta: 'lorem ipsum', guid: '1111'}, { pergunta: 'lorem ipsum', guid: '1111'}, { areatematicanavigator: {}, temanavigator: { bucket: [ { key: 'key', label: 'label', }, { key: 'key', label: 'label', } ] } } ] const objectOfInterest = data.find(item => 'temanavigator' in item) const buckets = objectOfInterest.temanavigator.bucket for (let index in buckets) { console.log(buckets[index].label); }Editar: esta es mi primera respuesta en stackoverflow. Perdóname por mis errores tontos.