2016-05-08 3 views
0

J'essaie d'obtenir une variable d'un objet, mais la clé variable provient de la valeur d'une autre variable.JS/ANGULAR Utiliser la valeur d'un var comme clé pour un autre objet

Voici ce que je suis en train d'expliquer:

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; 
    } 

Au lieu de tout cela, je veux juste faire:

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

Lorsque category est en fait une var avec une clé de catégorie, donc La valeur de la catégorie devrait être "personnelle" par exemple, puis elle accédera à l'objet personnel à l'intérieur de l'objet.

Répondre

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

accesseurs de propriété permettent d'accéder aux propriétés d'un objet en utilisant la notation de points:

obj.prop 

ou la notation de support:

obj[propStr] 

Par conséquent, vous pouvez modifier le code pour:

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

Lire here.