Ich habe diese komplexe Anordnung von Objekten (Ich werde nur die Knoten zeigen notwendig, das Problem zu erklären):Javascript Array von Objekten nicht zu ändern
var arr = [
{
json: {
doc: {
id: 1,
atualizacao:{
dc: false
}
}
}
}
]
angular.forEach(arr, function(value, key) {
if(value.json.doc.id == 1){
value.json.doc.atualizacao.dc = true;
}
});
Als ich diese forEach tun, ist es, den Wert der Änderungen 'dc' Knoten des Arrays an einer bestimmten Position. aber am Ende der forEach
ist das Array arr
immer noch unverändert.
Ich habe viele console.logs und fand heraus, dass:
-
wenn ich die Variable log: value.json.doc.atualizacao.dc - IT ZEIGT 'true'
-
; wenn ich die Variable log: value.json.doc.atualizacao - es erscheint 'dc = true'
-
wenn ich die Variable log: value.json.doc - IT ZEIGT ‚atualizacao.dc = true '
-
wenn ich die Variable log: value.json - es erscheint 'doc.atualizacao.dc = false'
-
wenn i log den Variablenwert - IT 'json.doc.atualizacao.dc = false'
Können Sie uns einen [Plunker] (http://plnr.co/) geben, der den Fehler zeigt? Es würde sehr hilfreich sein, das Problem zu duplizieren. –
Dies sollte gut funktionieren, habe es nur in der Konsole getestet (mit 'arr.forEach' anstelle von' angular.forEach') – konkked
siehe [Warum ist die Verwendung von "for ... in" mit Array-Iteration eine schlechte Idee?] (Http: //stackoverflow.com/questions/500504/why-isusing-for-in-in-array-iteration-a-bad-idea) –