我有一段简单的代码来检查一些条件,我希望每个条件都产生一个唯一的输出,但如果没有满足条件,则产生另一个唯一的输出。
有什么方法可以创建仅在所有先前的 if
语句都失败时才触发的 else
吗?我知道下面的代码执行相同的目的,但它看起来很麻烦,并且有一种更快的方法来检查所有变量会比将它们全部复制并粘贴到另一个 if 语句中更好。
var boolean1 = true,
boolean2 = true,
boolean3 = false;
if (boolean1) {
alert("boolean1");
}
if (boolean2) {
alert("boolean2");
}
if (boolean3) {
alert("boolean3");
}
/* and so on */
if (!boolean1 && !boolean2 && !boolean3 /* etc */ ) {
alert("none");
}
最佳答案
要实现这种规模,您需要将数据结构更改为可以迭代的内容。这样您的处理逻辑保持不变,您可以提供任何大小的输入。这是一个实现,其中我使用一个对象,其属性表示您的 bool 值。下面的 checkResults
函数遍历对象中的属性名称,检查每个属性的值,如果任何值为 true
,则执行警报并设置标志。最后,它会检查是否有任何值是 true
并针对该情况发出警报。
function checkResults(resultMap) {
var any = false;
Object.keys(resultMap).forEach(function(key) {
if (resultMap[key] === true) {
any = true;
alert(key);
}
});
if (!any)
alert('none');
}
checkResults({
'boolean1': false,
'boolean2': true,
'boolean3': false
});
如果必须,您可以按属性构建输入对象属性:
var results = {};
results['boolean1'] = true;
results['boolean2'] = false;
...
checkResults(results);
checkResults
函数始终保持不变。
关于javascript if if else (not else if),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726906/