【问题标题】:Javascript: What is the best option to execute multiple true functions?Javascript:执行多个真函数的最佳选择是什么?
【发布时间】:2017-01-17 04:35:35
【问题描述】:

我需要运行一个函数,该函数将同时检查多个值并运行所有返回为真语句的函数。 这些值是交织在一起的,IF/ELSE 不能这样做,因为它会在第一个返回 true 的代码处停止。 在我需要它的地方检查是否有更多这样的 IF 行也可能是真的,然后也运行这些行。 最后,如果它运行整个选项列表并且全部返回为 false,那么它需要运行一个全为 false 的代码行。

这样做的原因是我正在创建一个技能树。 这棵树在树的各个点上分叉并一起分支。

我最好的猜测是将开关与数组结合起来,但这比我编程的任何东西都复杂,所以我不确定。 不幸的是,我找到的每个关于 switch 的教程在返回一个 true 并运行一个函数后都有 switch end。

示例
IF真运行功能
IF真运行功能
如果错误忽略
如果错误忽略
如果错误忽略
IF真运行功能
如果错误忽略
如果错误忽略
如果都是假运行函数

【问题讨论】:

  • 你能澄清一下“运行所有返回真实语句的函数”吗?这意味着您必须运行该函数才能知道是否必须运行该函数。
  • multiple values at once 你的意思是一个接一个地,顺序地,因为javascript一次是单个任务 - 因为,你的问题充其量是太宽泛了,但几乎不明确 - 你必须发布一些细节
  • 将所有 if 结果存储在一个数组中?

标签: javascript arrays if-statement switch-statement


【解决方案1】:

如果我理解正确,你想知道:

有些测试是真的

var someTrue = ArrayOfFunctionTests.some(function(test) {
    return test()
})

或者每个测试都是假的

var allFalse = ArrayOfFunctionTests.every(function(test) {
    return !test()
})

两者都是一样的。

【讨论】:

    【解决方案2】:
    var tests = [true, false, true, false], // test results
        funcs = [act0, act1, act2, act3],   // functions to conditionally run
        allFalse = true
    
    tests.each(function(result, index) {
        if (result) funcs[index]()          // conditionally run function
        if (result) allFalse = false        // not allFalse if any is true
    })
    
    if (allFalse) finalFunction()           // final condional function
    

    【讨论】:

      猜你喜欢
      • 2011-10-15
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 2011-01-23
      • 1970-01-01
      • 2010-10-25
      • 1970-01-01
      相关资源
      最近更新 更多