我有12个包含布尔值的变量。根据每个布尔输入为true,我将一个数值赋给另一个名为from datetime import datetime, timedelta
from freeze_gun import freeze_time
from other_module import some_code
fake_today = datetime.datetime(2017, 7, 11)
with_freeze_time(fake_today):
some_code()
# simulate passage of time to tomorrow
with_freeze_time(fake_today + timedelta(days=1))
some_code()
的变量。我遇到的问题是我无法在不重复值的情况下找出如何附加到此变量finalInputValue
。到目前为止,我有以下代码:
finalInputValue
正如您所看到的,此块基本上是将第一个数值赋给变量 var finalInputValue = ""
function findFinalInputValue(){
if (finalInputValue == ""){
finalInputValue = boolean1Input == true ? "527" :
boolean2Input == true ? "528" :
boolean3Input == true ? "529" :
boolean4Input == true ? "530" :
boolean5Input == true ? "531" :
boolean6Input == true ? "532" :
boolean7Input == true ? "533" :
boolean8Input == true ? "534" :
boolean9Input == true ? "535" :
boolean10Input == true ? "536" :
boolean11Input == true ? "537" :
boolean12Input == true ? "538" : "";
}
if (finalInputValue != ""){
...
...
}
}
findFinalInputValue();
。如何检查所有12个布尔输入,我怎么能让我的函数反复运行?如何在每个布尔值为真的附加数字值,而不复制其中一个值的函数?我还没有启动附加到第一个结果的函数的一部分,因为我不知道如何告诉函数忽略某个布尔输入(如果它已经被附加)。希望我已经清楚了。我只是想获得所有" true"的附加数字值字符串。布尔输入。最简单的方法是什么?一个for循环?使用数组?
答案 0 :(得分:0)
var output = "";
if( boolean1Input ) output += "527,";
if( boolean2Input ) output += "528,";
if( boolean3Input ) output += "529,";
if( boolean4Input ) output += "530,";
if( boolean5Input ) output += "531,";
if( boolean6Input ) output += "532,";
if( boolean7Input ) output += "533,";
if( boolean8Input ) output += "534,";
if( boolean9Input ) output += "535,";
if( boolean10Input ) output += "536,";
if( boolean11Input ) output += "537,";
if( boolean12Input ) output += "538";
return output;
请注意,这可能包含您必须处理的,
个字符。
var output = [];
if( boolean1Input ) output.push("527");
if( boolean2Input ) output.push("528");
if( boolean3Input ) output.push("529");
if( boolean4Input ) output.push("530");
if( boolean5Input ) output.push("531");
if( boolean6Input ) output.push("532");
if( boolean7Input ) output.push("533");
if( boolean8Input ) output.push("534");
if( boolean9Input ) output.push("535");
if( boolean10Input ) output.push("536");
if( boolean11Input ) output.push("537");
if( boolean12Input ) output.push("538");
return output;
var output = [];
for( var i = 1; i <= 12; i++ ) {
var input = eval('boolean' + i + 'Input');
if( input ) output.push( i + 526 );
}
答案 1 :(得分:0)
使用数组而不是许多单独的变量。
function findFinalInputValue(inputs) {
if (finalInputValue == "") {
for (var i = 0; i < inputs.length; i++) {
if (inputs[i] == true) {
finalInputValue += (527 + i).toString();
}
}
}
if (finalInputValue != "") {
...
}
}
findFinalInputValue(booleanInputs);
答案 2 :(得分:0)
你可以使用json跟踪附加值
Access-Control-Allow-Origin
通过获取所有键,您可以在完成循环后获得最终值 Finalvalue.Keys()
答案 3 :(得分:0)
我强烈建议您使用数组存储输入,这非常方便。假设我们有这样的输入:
const CODES = ["527", "528", "529", "530", "531", "532", "533", "534", "535", "536", "537", "538"];
const inputs = [boolean1Input, boolean2Input, boolean3Input, boolean4Input, boolean5Input, boolean6Input, boolean7Input, boolean8Input, boolean9Input, boolean10Input, boolean11Input, boolean12Input];
然后只需使用:
[...CODES.keys()]
.filter(x => inputs[x])
.map(x => CODES[x])
首先过滤掉所有错误输入,然后将剩余索引映射到相应的代码。
但是,如果无法使用数组输入,我会编写如下代码:
[
boolean1Input && "527",
boolean2Input && "528",
boolean3Input && "529",
boolean4Input && "530",
boolean5Input && "531",
boolean6Input && "532",
boolean7Input && "533",
boolean8Input && "534",
boolean9Input && "535",
boolean10Input && "536",
boolean11Input && "537",
boolean12Input && "538",
].filter(x => x) // filter out false values