I ein JSON Objekt wie so haben:durch Objekte in JSON Array Looping
{
"workouts":
[
{
"title": "Full Body",
"exercises":
[
{
"name": "Push Ups",
"duration": 3,
"break": 3
},
{
"name": "Squats",
"duration": 3,
"break": 3
},
{
"name": "Running in Place",
"duration": 3,
"break": 3
}
]
},
{
"title": "God Legs",
"exercises":
[
{
"name": "Running in Place (High Knees)",
"duration": 3,
"break": 3
},
{
"name": "Squats",
"duration": 3,
"break": 3
},
{
"name": "Clams",
"duration": 3,
"break": 3
}
]
},
{
"title": "Morning Stretch",
"exercises":
[
{
"name": "Downward Dog",
"duration": 3,
"break": 3
},
{
"name": "Face Plant",
"duration": 3,
"break": 3
},
{
"name": "Warrior",
"duration": 3,
"break": 3
}
]
}
]
}
I können die Titel Schleife durch und hängen sie an den Körper, wie ich würde nun durch jede Objekt-Schleife in der "enthaltenen Übungen "array und drucken Sie jeden Wert: Name, Dauer und Pause, pro Objekt. Ich habe nicht viel Erfolg und ich frage mich, ob ich meine JSON-Struktur ändern sollte oder ob ich in meinen Loops einen dummen Fehler mache. Ich verwende Firebase übrigens, keine AJAX-Anrufe oder ähnliches.
JavaScript:
// Initialize firebase.
firebase.initializeApp(config);
var dbRef = firebase.database().ref().child("workouts");
// Sync with Firebase in real time.
dbRef.on("value", snap =>
{
var workouts = snap.val();
// HAVE A LOOP FOR EVERY ARRAY INJSON.
for (var i = 0; i < workouts.length; i++)
{
window.alert(i + workouts[i].title); // Works fine.
var obj = workouts[i].exercises;
for (obj in workouts)
{
alert(obj.name); // Returns undefined for each object.
}
}
});
entfernen 'var obj = Training [i] .exercises;' und 'ersetzen für (obj in Training)' mit 'für (obj in Training [i] .exercises)'. Sie überschreiben die 'obj'-Variable und durchlaufen das falsche Array, es sei denn, ich bin falsch. – powerbuoy
Die Benutzeroberfläche basierend auf JSON-Objekten ist so gut mit etwas wie [Aurelia] (http://aurelia.io/) btw. Nur eine Seite. – powerbuoy