当前位置: 首页 > 知识库问答 >
问题:

开关情况下的Javascript多重决策

柳星晖
2023-03-14

我很难运行一个在开关情况下检查两个条件的代码,因为这段代码打印“unknown”,因为在javascript中

['police',false]!=['police',false]
var option='police';
var urgent=false;

switch([option,urgent])
{
case ['police',true]:
       console.log('police,true');
       call_police_urgent();
       break;
case ['police',false]:
       console.log('police,false');
       call_police();
       break;
case ['hospital',true]:
       console.log('hospital,true');
       call_hospital_urgent();
       break;
case ['hospital',false]:
       console.log('hospital,false');
       call_hospital();
       break;
case ['firestation',true]:
       console.log('firestation,true');
       call_firestation_urgent();
       break;
case ['firestation',false]:
       console.log('firestation,false');
       call_firestation();
       break;
default:
       console.log('unknown');
}

共有1个答案

法兴德
2023-03-14

您的代码无法工作,因为一个数组文字永远不等于另一个数组文字,即使它们看起来相同。解决这个问题的方法有很多,但大多数都归结为将数组转换为可以比较的对象,例如字符串:

let str = (...args) => JSON.stringify(args);

switch (str(option, urgent)) {
    case str('police', false):
        console.log('police,false');
        break;
    case str('hospital', true):
        console.log('hospital,true');
        break;
    default:
        console.log('unknown');
}

这适用于您的简单情况,但不是一般情况,因为不是所有的东西都可以被严格化。

 类似资料: