如何在javascript中实现这个逻辑?

时间:2013-08-14 08:35:43

标签: javascript jquery

我在我的项目中使用javascript而且我是新手。我有一个场景,我想为我的组件实现一个Status属性。此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 个答案:

答案 0 :(得分: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 : {}
                     };

并具有相同的功能。

答案 1 :(得分: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.
}

答案 2 :(得分: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;
      [...]
    }

答案 3 :(得分: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 然后输出拒绝