0

我在我的项目中使用 javascript,我是新手。我有一个场景,我想为我的组件实现一个 Status 属性。此状态属性显示可用状态列表中我的组件的当前状态。例如:

我以这种方式实现:

  var availableStatus = [
                          { Name: 'visible' }, 
                          { Name: 'hidden' }, 
                          { Name: 'deny' }, 
                          { Name: 'allow' }, 
                          { Name: 'destroy' }
                         ];

  var Status = availableStatus[0];

  if(Status === availableStatus[0])
    //do this 
  else if(Status === availableStatus[1])
    //do this 
  ...

但我觉得应该有另一种更好的方法来解决这个问题。而且这个逻辑依赖于数组项的顺序,如果数组顺序发生变化,将来可能会产生问题。我有另一个逻辑可以通过使用命名数组来实现这一点。但我不知道怎么做。

请任何人都可以给我一个更好的建议来实现这种场景吗?

4

4 回答 4

2

按名称对它们进行索引(如果足够独特的话):

var availableStatus = {
                      visible : { Name: 'visible' }, 
                      hidden : { Name: 'hidden' }, 
                      deny : { Name: 'deny' }, 
                      allow : { Name: 'allow' }, 
                      destroy : { Name: 'destroy' }
                     };

var Status = availableStatus.visible;

if(Status === availableStatus.visible)
    //do this 
else if(Status === availableStatus.hidden)
    //do this 

这是假设稍后在状态对象中有更多信息,或者在该数据上工作的函数。如果你只想存储一个字符串,你可以这样做:

var availableStatus = {
                      visible : {},
                      hidden : {}, 
                      deny : {}, 
                      allow : {}, 
                      destroy : {}
                     };

并具有相同的功能。

于 2013-08-14T08:41:50.380 回答
1

听起来您想使用一个switch语句:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch 。

switch(Status) {
  case 'visible':
    // do something...
    break;
  case 'hidden':
    // do something else...
  // etc.
}
于 2013-08-14T08:40:46.597 回答
0

那个怎么样?您可以在分配给状态的字典中存储更多信息,例如“can_recieve_messages”。

    var availableStatus = {
                          'visible': { id: 0 }, 
                          'hidden':  { id: 1},
                          'deny' : { id: 2} [...]
                         };

    var Status = availableStatus.visible;

    switch (Status ) {
        case availableStatus.visible:
           // on visible
           break;
        case availableStatus.hidden:
           // on hidden
           break;
      [...]
    }
于 2013-08-14T08:40:07.470 回答
0
 var availableStatus ={};

                        availableStatus.['visible']='visible';
                        availableStatus.['hidden']= 'hidden';
                        availableStatus.['deny']= 'deny';
                        availableStatus.['deny']= 'deny' ; 
                        availableStatus.['destroy']= 'destroy';

我的键名与值相同,您可以为键和值使用任何名称

   availableStatus.['test']= 'deny' ; 

如果你写了availableStatus.destroy ,那么你可以使用任何东西而不用担心秩序,那么输出就会破坏

availableStatus.test然后输出将被 拒绝

于 2013-08-14T08:45:04.497 回答