gpt4 book ai didi

javascript - ifelse 用于两个变量的多种组合

转载 作者:行者123 更新时间:2023-12-03 07:52:09 28 4
gpt4 key购买 nike

我有两个如下变量:

var a = "active"  //[two possible value active/inactive]
var b = "inactive" //[three possible values active/locked/disabled]
var outcome = ""

if(a=="active" && b=="active")
outcome = "a";
elif(a=="active" && b=="locked")
outcome = "b"
elif(a=="active" && b=="disabled")
outcome = "c"
elif(a=="inactive" && b=="active")
outcome = "d"
elif(a=="inactive" && b=="disabled")
outcome = "e"
elif(a=="inactive" && b=="locked")
outcome = "f"

除了在 JS 中使用 ifelse 检查不同条件之外,描述可能结果的最有效方法是什么?请提出建议。

最佳答案

您可以通过使用对象使逻辑更加数据驱动,例如:

var outcomeMap = {
active: {
active: "a",
locked: "b",
disabled: "c"
},
inactive: {
active: "d",
locked: "e",
disabled: "f",
}
};

然后,您可以通过使用 a 访问此对象来设置 outcome 变量,然后访问嵌套对象的值,例如:

var outcome = outcomeMap[a][b];

请注意,如果 a 可以是您提到的值以外的任何值,最好检查 outcomeMap[a] 是否 未定义 code> 在访问 b 之前。如果您的环境支持它,可以使用 optional chaining 来完成outcomeMap[a]?.[b];

或者,您可以使用可能的组合设置数组,然后循环遍历它们以检查您的组合是否匹配。然后,如果找到结果,您可以根据当前索引对结果(结果)建立索引,例如:

function getOutcome(a, b) {
const aVals = ['active', 'inactive'];
const bVals = ['active', 'locked', 'disabled'];
const outcomes = [['a', 'b', 'c'], ['d', 'e', 'f']];

for(const [i, aVal] of aVals.entries()) {
for(const [j, bVal] of bVals.entries()) {
if (aVal == a && bVal == b) {
return outcomes[i][j];
}
}
}
// return ''; if you want a default value of empty string
}
const outcome = getOutcome('inactive','locked');
console.log(outcome);

请注意,这些方法都不比使用 if 语句更有效。但是,如果您获得更多可能性,它们应该更容易扩展。

关于javascript - ifelse 用于两个变量的多种组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76920454/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com