我正在编写一些代码来填充角度’x-editable’类型的控件.我有一个预定义的值数组,基于我的webapi服务将传递给我的字符串标识符.它发回一个字符串.基于此字符串,我从使用以下方法预定义的数组中选择对象:
valuetoshow = myarray['stringFromWebApiCall'];
JSHINT正在抛弃它,因为它要我使用点符号.我理解为什么JSHINT告诉我这个,而且我也理解它告诉我哪些线路,而且我知道如果我将我的代码改为像“answers.undergraduate = bigarray”那样它将修复jshint.当我在下面的代码中提供了一个字符串时,我只是不知道如何使用.notation访问数组.
在javascript中是否有某种方法可以让我使用字符串以点表示法查找某些内容?我已经习惯了C#和这种准类型奇怪的变量定义,这让我很难理解.
> [‘UNDERGRADUATE’]最好用点符号书写.
> [‘GRADUATE’]最好用点符号书写.
> [‘HONORARY’]最好用点符号书写.
> [‘DOCTORATE’]最好用点符号书写.
> [‘MASTERS’]最好用点符号书写.
> [‘UNDEFINED’]最好用点符号书写.
我应该试图压制错误吗?我应该在api结果上写一个很难看的开关声明吗?
这是真正的代码
answers['UNDERGRADUATE'] = [ { 'name': 'Find a job','ticked': false,'hideThisGroup':false,'checkBoxDisabled': false },{ 'name': 'Create a network with STTI members','hideThisGroup':true,{ 'name': 'Receive nursing guidance',{ 'name': 'Learn and grow through online continuing nursing education','checkBoxDisabled': false } ]; answers['GRADUATE'] = [ { 'name': 'Find a job',{ 'name': 'Expand your network with STTI members',{ 'name': 'Grow your portfolio',{ 'name': 'Develop advanced leadership skills',{ 'name': 'Stay current on nursing trends','checkBoxDisabled': false } ]; answers['NURSE LEADER'] = [ { 'name': 'Find a job','checkBoxDisabled': false } ]; answers['HONORARY'] = [ { 'name': 'Find a job','checkBoxDisabled': false } ]; answers['DOCTORATE'] = [ { 'name': 'Find a job','checkBoxDisabled': false } ]; answers['MASTERS'] = [ { 'name': 'Find a job','checkBoxDisabled': false } ]; answers['UNDEFINED'] = [ { 'name': 'Find a job','checkBoxDisabled': false } ]; if ($rootScope.constituent != undefined){ if ($rootScope.constituent.InductedAs != undefined) { $scope.constituentPriorities = answers[$rootScope.constituent.InductedAs.toUpperCase()]; } else { $scope.constituentPriorities = answers['UNDEFINED']; } }
解决方法
Is there a way to use dot notation to accomplish something like this
……是吗?
answers.UNDERGRADUATE = ...
等等
澄清一下:你需要在代码上面编写实际的数据声明,作为answers.UNDERGRADUATE. JSHint并没有抱怨这条线:
... answers[$rootScope.constituent.InductedAs.toUpperCase()];
显然,该行不能使用点符号编写. JSHint抱怨的那些行是字面上写成答案[‘UNDEFINED’]或答案[‘UNDERGRADUATE’].这些是你需要解决的问题,以沉默JSHint.