I eine JavaScript verschachteltes Objekt haben, wie unten gezeigt:Extrahieren und Zusammenführen von Arrays aus einem verschachtelten Javascript Objekt
input_data = {
"A1":{
"B1":{
"M1" : [
{"E1":"10","E2":"11"},
{"E1":"20","E2":"21"}
],
"M2":[
{"E1":"30","E2":"31"},
{"E1":"40","E2":"41"}
],
"M3":[
{"E1":"50","E2":"51"}
]
}
},
"A2":{
"B2":{
"M1": [
{"E1":"60","E2":"61"},
{"E1":"70","E2":"71"}
],
"M2":[
{"E1":"80","E2":"81"},
{"E1":"90","E2":"91"}
]
}
}
}
I alle Elemente unter „M1“, „M2“, „M3“ in eine extrahieren, benötigen Array, das heißt, sollte die Ausgabe wie unten gezeigt:
output_data = [
{"E1":"10","E2":"11"},
{"E1":"20","E2":"21"},
{"E1":"30","E2":"31"},
{"E1":"40","E2":"41"},
{"E1":"50","E2":"51"},
{"E1":"60","E2":"61"},
{"E1":"70","E2":"71"},
{"E1":"80","E2":"81"},
{"E1":"90","E2":"91"}
];
ich dies auf folgende Weise erreichen könnte:
var output_data = [];
function traverse(obj) {
for (i in obj) {
if (!!obj[i] && typeof(obj[i])=="object") {
if (Array.isArray(obj[i])){
output_data = output_data.concat([], obj[i]);
}
traverse(obj[i]);
}
}
}
traverse(input_data);
console.log(output_data);
ist th Gibt es eine bessere Möglichkeit, die Kind-Array-Elemente zu extrahieren und zu einem zusammenzuführen?
Wenn es für Sie läuft dann gehört dies auf Codereview. In diesem Fall würde ich das Array output_data innerhalb der Funktion verschieben und es am Ende der Funktion nach der for-Schleife zurückgeben. –