Wie benutzt man Punktnotation, wenn mir eine Zeichenfolge zur Verfügung gestellt wird?Lösung für jshint "Besser in Punktnotation geschrieben", wenn ich die Nicht-Punktnotation gültig verwende
Ich schreibe einen Code, um eine eckige x-editierbare Art von Steuerelement zu füllen. Ich habe ein Array von Werten, die mit einer String-ID vordefiniert sind, basierend auf dem, was mein Webapi-Service an mich zurückgibt. Es sendet eine Zeichenfolge zurück. Auf der Grundlage dieser Zeichenfolge, wähle ich das Objekt aus dem Array Ich habe mit dem folgende Verfahren vorge definiert:
valuetoshow = myarray['stringFromWebApiCall'];
JSHINT wirft einen Anfall, weil es mir will Punktnotation verwenden. Ich verstehe, WARUM JSHINT mir das erzählt, und auch ich verstehe, von welchen Zeilen es erzählt, und ich weiß, wenn ich meinen Code zu etwas wie "answers.undergraduate = bigarray" ändere, wird es den jshint reparieren. Ich weiß einfach nicht, was mit dem Zugriff auf das Array mit .notation zu tun ist, wenn ich eine Zeichenfolge im folgenden Code zur Verfügung gestellt.
Gibt es eine Art von Methode in Javascript, die ich eine Zeichenfolge verwenden kann, um etwas in Punktnotation nachschlagen? Ich bin an C# gewöhnt und diese quasi-typisierte seltsame Definition von Variablen, die es schwierig für mich macht, meinen Kopf herum zu wickeln.
['UNDERGRADUATE'] is better written in dot notation.
['GRADUATE'] is better written in dot notation.
['HONORARY'] is better written in dot notation.
['DOCTORATE'] is better written in dot notation.
['MASTERS'] is better written in dot notation.
['UNDEFINED'] is better written in dot notation.
Sollte ich den Fehler zu unterdrücken versuchen? Sollte ich nur eine große hässliche switch-Anweisung auf die api-Ergebnisse schreiben?
Hier ist der eigentliche Code
answers['UNDERGRADUATE'] = [
{ 'name': 'Find a job', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Create a network with STTI members', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Receive nursing guidance', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Learn and grow through online continuing nursing education', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false }
];
answers['GRADUATE'] = [
{ 'name': 'Find a job', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Expand your network with STTI members', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Grow your portfolio', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Develop advanced leadership skills', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Stay current on nursing trends', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Learn and grow through online continuing nursing education', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false }
];
answers['NURSE LEADER'] = [
{ 'name': 'Find a job', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Expand your network with STTI members', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Grow your portfolio', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Develop advanced leadership skills', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Stay current on nursing trends', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Learn and grow through online continuing nursing education', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false }
];
answers['HONORARY'] = [
{ 'name': 'Find a job', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Expand your network with STTI members', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Grow your portfolio', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Develop advanced leadership skills', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Stay current on nursing trends', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Learn and grow through online continuing nursing education', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false }
];
answers['DOCTORATE'] = [
{ 'name': 'Find a job', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Expand your network with STTI members', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Grow your portfolio', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Develop advanced leadership skills', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Stay current on nursing trends', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Learn and grow through online continuing nursing education', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false }
];
answers['MASTERS'] = [
{ 'name': 'Find a job', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Expand your network with STTI members', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Grow your portfolio', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Develop advanced leadership skills', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Stay current on nursing trends', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Learn and grow through online continuing nursing education', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false }
];
answers['UNDEFINED'] = [
{ 'name': 'Find a job', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Expand your network with STTI members', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Grow your portfolio', 'ticked': false, 'hideThisGroup':false, 'checkboxDisabled': false },
{ 'name': 'Develop advanced leadership skills', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Stay current on nursing trends', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false },
{ 'name': 'Learn and grow through online continuing nursing education', 'ticked': false, 'hideThisGroup':true, 'checkboxDisabled': false }
];
if ($rootScope.constituent != undefined){
if ($rootScope.constituent.InductedAs != undefined) {
$scope.constituentPriorities = answers[$rootScope.constituent.InductedAs.toUpperCase()];
} else {
$scope.constituentPriorities = answers['UNDEFINED'];
}
}
Überprüfen Sie, ob das Objekt über die Eigenschaft verfügt. http://stackoverflow.com/questions/135448/how-do-i-check-if-an-object-has-a-property-in-javascript – Hobbs
Umh ...Der einzige Eigenschaftsname im Code, der die Klammernotation erfordert, ist "NURSE LEADER". Sie können alle anderen mit der Punktnotation schreiben. – Teemu
Sie haben keine _Strings_, Sie haben _primitives_ innerhalb der Klammern. Sie sind fest codiert und werden daher nicht dynamisch erstellt. Wenn Sie eine Variable in den Klammern benötigen, entfernen Sie die Anführungszeichen. Nur Eigenschaftsnamen, die Zeichen außerhalb von '$, _, AZ, az, 0-9 'enthalten, benötigen Klammer-Notation, wenn _hardcoded_, – Teemu