我在我的项目中使用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
...
但我觉得应该有另一种更好的方法。这个逻辑依赖于数组项顺序,如果数组顺序发生变化,将来可能会产生问题。我有另一个逻辑,通过使用命名数组来实现它。但我不知道如何。
请有人能给我一个更好的建议来实现这种情况吗?
答案 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 然后输出拒绝