【问题标题】:JS / ANGULAR Use a var's value as the key for another objectJS / ANGULAR 使用 var 的值作为另一个对象的键
【发布时间】:2016-09-03 05:31:16
【问题描述】:

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

这就是我要解释的内容:

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,key为category,所以category的值应该是“personal”,然后才会访问对象内部的personal项。

【问题讨论】:

    标签: javascript angularjs variables var func


    【解决方案1】:
    if ( typeof vm.queryBank[ category ] === 'undefined' ) {
      throw 'Unsupported category "' + category + '".';
    }
    vm.currentQuery = vm.queryBank[ category ][ vm.currentQueryNum ];
    

    【讨论】:

      【解决方案2】:

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

      obj.prop
      

      或括号表示法:

      obj[propStr]
      

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

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

      阅读here

      【讨论】:

        猜你喜欢
        • 2022-01-25
        • 2020-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-17
        相关资源
        最近更新 更多