paso a comentar. Para una app de trivia simple necesito filtrar segun la categoria seleccionada pero no logro dar con el metodo. Por lo que veo no le estoy dando el formato correcto pero no se como hacerlo de otra forma. Me informa la consola que info no esta definida. En resumen con ajax() llamo la informacion, preguntaCategoria() es la que filtraria tal informacion y preguntaAleatoria() da un numero cualquiera para usarlo como indice del array devuelto en preguntaCategoria(), por ultimo cargarPregunta() inserta el html. Dejo funciones:
function ajax(){
var xhr = new XMLHttpRequest();
var datos = null;
xhr.onreadystatechange = () => {
if(xhr.readyState == 4 && xhr.status == 200){
datos = JSON.parse(xhr.responseText);
}
}
xhr.open("GET","base.json",false);
xhr.send();
return datos;
};
function preguntaCategoria(){
const json = ajax();
let categoria = [];
for(let i = 0; i < json.length;i++){
if(categoriaSeleccionada === "Todo" || categoriaSeleccionada === ""){
return json;
}else{
if(json[i].categoria == categoriaSeleccionada){
categoria.push(json[i]);
}
}
}
return categoria;
}
function preguntaAleatoria(){
const json = ajax();
let indice = Math.floor(Math.random()*(json.length-0)-0);
return indice;
}
function cargarPregunta(){
if(cantidadRespondidas < 21){
info = preguntaCategoria()[preguntaAleatoria()];
console.log(info);
respuestas = [
info.respuesta, info.incorrecta1, info.incorrecta2, info.incorrecta3
]
respuestas.sort(()=>Math.random()-0.5);
estructuraCuadro(info.categoria, info.pregunta, info.imagen, respuestas,cantidadRespondidas);
}
}
Adjunto una parte de la bd el original tiene mas de mil objetos JSON:
[
{
"categoria": "Arte y literatura",
"pregunta": "¿Quién pintó la mona lisa?",
"respuesta": "Leonardo da Vinci",
"incorrecta1": "Picasso",
"incorrecta2": "Miguel Ángel",
"incorrecta3": "Monet",
"imagen": "https://i.ibb.co/9cjvmw1/mona-lisa.jpg",
},
{
"categoria": "Historia",
"pregunta": " ¿Quiénes fueron los sans-culottes de la Revolución Francesa?",
"respuesta": "La Principal Masa Social Revolucionaria",
"incorrecta1": "La Burguesía Durante La Revolución",
"incorrecta2": "El Nombre Despectivo De Los Burgueses",
"incorrecta3": "Ninguna Es Correcta\r"
},
{
"categoria": "Deportes",
"pregunta": "Si juegas en la NFL ¿qué deporte practicas?",
"respuesta": "Fútbol Americano",
"incorrecta1": "Natación",
"incorrecta2": "Hockey",
"incorrecta3": "Golf \r"
},
{
"categoria": "Entretenimiento",
"pregunta": " ¿Cómo se llamaba el perro de Luke Skywalker?",
"respuesta": "No Tenía",
"incorrecta1": "Yoda Dog",
"incorrecta2": "Rithaaard",
"incorrecta3": "Raikonen\r"
}
]