Im folgenden Code ist die tatsächliche Länge von user.roles 1. Die Schleife wird jedoch zweimal ausgeführt.Javascript: for..in Schleife läuft mehr Male als erwartet
Wenn ich den Wert von i ausgabe, wird es als 'diff' für die zweite Iteration angezeigt. Die Umstellung auf die normale for-Schleife löste die Situation. Allerdings würde ich gerne wissen, was das Problem mit der for..in Schleife ist.
Update: Benutzer ist ein Objekt und Rollen ist ein Array von Objekten. Die Instanz von Rollen, die das Problem verursacht wird unten dargestellt:
{
"_id": "582d3390d572d05c1f028f53",
"displayName": "Test Teacher Attendance",
"gender": "Male",
"roles": [
{
"_id": "57a1b3ccc71009c62a48a684",
"school": "57a1b3ccc71009c62a48a682",
"role": "Teacher",
"__v": 0,
"designation": true,
"permissions": [
{
"feature": "User",
"_id": "57ac0b9171b8f0b82befdb7d",
"review": false,
"view": true,
"delete": false,
"edit": false,
"create": false
},
{
"feature": "Notice",
"_id": "57ac0b9171b8f0b82befdb7c",
"review": false,
"view": true,
"delete": false,
"edit": false,
"create": false
},
]
}
],
}
können Sie Benutzer, Rollen, Berechtigungen, accessType definieren? das sind Objekte, Strings, ganze Zahlen. – Teocci
Ist 'user.roles' ein Array/Iterator? Vielleicht solltest du 'for .. of' verwenden. – zeronone
Warum benutzt du' for in'? versuche 'forEach' zu verwenden. Es ist bequemer. http://stackoverflow.com/questions/23614054/javascript-nuances-of-myarray-foreach-vs-for-loop –