Ich habe ein Objekt (von MongoDB kommt), das wie folgt aussieht:Kann Schleife richtig durch in verschachteltem Objekt/Array in Javascript
var test = [
{
"_id": "1",
"childs": [
{
"name": "First child",
"child_id": 1
},
{
"name": "Second child",
"child_id": 2
}
]
},
{
"_id": "2",
"childs": [
{
"name": "First child",
"child_id": 1
}
]
}
];
Ich versuche, durch diese Schleife und jedes Kind zeigen, wie ein separater Artikel Dies ist, wie ich es so mache:
var response_items = [];
//Process relays as individual devices
test.forEach(function(device) {
var response_item = {};
response_item._id = device._id;
//Process relays as individual devices
device.childs.forEach(function(child) {
response_item.name = child.name;
response_item.child_id = child.child_id;
//Return devices
response_items.push(response_item);
});
});
console.log(response_items);
Aber aus irgendeinem Grund das ist das Ergebnis bekam ich:
Array (3)
{_id: "1", name: "Second child", child_id: 2}
{_id: "1", name: "Second child", child_id: 2}
{_id: "2", name: "First child", child_id: 1}
Der dritte Punkt ist richtig, aber die erste und die zweite dupliziert und ich habe keine Ahnung, was ich falsch mache.
Beispiel: https://jsfiddle.net/om89y661/
Sicher, Sie mutieren das gleiche Objekt innerhalb der inneren 'forEach()', also überschreibt die nächste Iteration die vorherigen Eigenschaften, die Sie festgelegt haben. Sie schieben dann das gleiche Objekt in das Array. Deklarieren Sie stattdessen Ihr 'var response_item = {}' innerhalb des inneren '.forEach()'. JS kopiert niemals implizit Objekte. –
Versuchen Sie, die ersten beiden Codezeilen (var response_item = {} ...) in 'device.childs.forEach()' zu setzen oder werfen Sie einen Blick auf diese Geige (gabeln Sie sie) https://jsfiddle.net/5kyk7pbx/ – Jorrex
Ich fühle mich dumm ... Danke – passatgt