2016-05-08 46 views
0

Ich versuche, eine Variable von einem Objekt zu erhalten, aber der variable Schlüssel stammt aus dem Wert einer anderen Variablen.JS/ANGULAR Verwenden Sie den Wert eines Variablen als Schlüssel für ein anderes Objekt

Hier ist, was ich versuche zu erklären:

vm.getQuestion = function(category) { 
     switch (category) { 
      case "personal": 
      var query = vm.queryBank.personal[vm.currentQueryNum]; 
      break; 
      case "taste": 
      var query = vm.queryBank.taste[vm.currentQueryNum]; 
      break; 
      case "skills": 
      var query = vm.queryBank.skills[vm.currentQueryNum]; 
      break; 
      case "habits": 
      var query = vm.queryBank.habits[vm.currentQueryNum]; 
      break; 
      case "feedback": 
      var query = vm.queryBank.feedback[vm.currentQueryNum]; 
      break; 
      case "usabilty": 
      var query = vm.queryBank.usabilty[vm.currentQueryNum]; 
      break; 
      case "hobbies": 
      var query = vm.queryBank.hobbies[vm.currentQueryNum]; 
      break; 
      case "custom": 
      alert('Not yet baba!'); 
      break; 
      default: 
      console.log('category not valid: '+category); 
     } 
     vm.currentQuery = query; 
    } 

Statt all dies möchte ich nur tun:,

vm.currentQuery = vm.queryBank.category[vm.currentQueryNum]; 

Wenn category tatsächlich ein var mit einem Schlüssel der Kategorie ist so Der Wert der Kategorie sollte beispielsweise "persönlich" sein und dann auf das persönliche Objekt innerhalb des Objekts zugreifen.

Antwort

1
if (typeof vm.queryBank[ category ] === 'undefined') { 
    throw 'Unsupported category "' + category + '".'; 
} 
vm.currentQuery = vm.queryBank[ category ][ vm.currentQueryNum ]; 
0

Eigenschaftenaccessoren ermöglichen den Zugriff auf die Eigenschaften eines Objekts durch die Punktnotation verwendet:

obj.prop 

oder die Halterung Notation:

obj[propStr] 

Daher können Sie den Code ändern:

vm.currentQuery = vm.queryBank[category][vm.currentQueryNum]; 

Lesen Sie here.