当我提供一个字符串时,如何使用点符号?

我正在编写一些代码来填充 Angular “x可编辑”类型的控件。我有一个基于字符串的标识符预定义的值数组,该标识符基于我的webapi服务将返回给我的东西。它发回一个字符串。基于此字符串,我使用以下方法从预定义的数组中选择对象:

valuetoshow = myarray['stringFromWebApiCall'];

JSHINT提出了建议,因为它希望我使用点表示法。我了解为什么JSHINT会告诉我这一点,并且我也了解它告诉我的是哪几行,而且我知道如果将代码更改为“answers.undergraduate = bigarray”之类的内容,它将可以修复jshint。 当我在下面的代码中提供字符串时,我只是不知道如何使用.notation访问数组。

javascript中是否有某种方法可以让我使用字符串以点表示法查找内容?我已经习惯了C#和这种准类型的变量的奇怪定义,事实证明,缠住我的头很难。
  • ['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.

  • 我应该尝试抑制该错误吗?我应该在api结果上写一个大的丑陋的switch语句吗?

    这是真实的代码
        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'];
            }
        }
    

    最佳答案



    ... 是的?

    answers.UNDERGRADUATE = ...
    

    ETC

    需要说明的是:您需要在代码上方写一些东西,即实际的数据声明,作为answers.UNDERGRADUATE。 JSHint没有提示这一行:
    ... answers[$rootScope.constituent.InductedAs.toUpperCase()];
    

    显然,该行不能使用点符号书写。 JSHint提示的行实际上是写为answers['UNDEFINED']answers['UNDERGRADUATE']的行。这些是您需要修复的行,以使JSHint静音。

    10-06 07:43