JS / ANGULAR使用var的值作为另一个对象的键

时间:2016-05-08 15:01:27

标签: javascript angularjs variables var func

我试图从对象中获取变量,但变量键来自另一个变量的值。

以下是我试图解释的内容:

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

而不是所有这些我只想做:

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

category实际上是具有类别键的var时,类别的值应该是"个人"例如,然后它将访问对象内的个人项目。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

属性访问器通过使用点表示法提供对对象属性的访问:

obj.prop

或括号表示法:

obj[propStr]

因此,您可以将代码更改为:

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

阅读here