2017-01-17 5 views
0

Мне нужно запустить функцию, которая будет проверять сразу несколько значений и запускать все функции, возвращаемые как истинное утверждение. Эти значения переплетаются, и IF/ELSE не может этого сделать, потому что он останавливается при первом коде, который возвращает значение true. Где мне нужно, чтобы спуститься вниз и проверить, может ли быть больше таких линий IF, и запустить их тоже. Наконец, если он запускает весь список параметров, а все возвращает как false, тогда ему нужно запустить всю строку ложного кода.Javascript: что является лучшим вариантом для выполнения нескольких истинных функций?

Причина в том, что я создаю дерево навыков. Это дерево разветвляется и разветвляется в точках вдоль дерева.

Мое лучшее предположение заключается в объединении переключателя с массивом, но это сложнее, чем все, что я запрограммировал, поэтому не уверен. К сожалению, каждый учебник, который я нашел с коммутатором, имеет конец коммутатора после того, как он возвращает одно значение true и запускает одну функцию.

Пример
ЕСЛИ истинная функция запуска
ЕСЛИ истинная функция запуска
если ложно игнорировать
если ложно игнорировать
если ложно игнорировать
ЕСЛИ истинная функция запуска
если ложно игнорировать
если ложно игнорировать
ЕСЛИ все были ложной функцией запуска

+0

Можете ли вы прояснить «запустить все функции, возвращаемые как истинное утверждение»? Это означало бы, что вы должны запустить функцию, чтобы знать, следует ли вам запускать эту функцию. – Hurelu

+0

«несколько значений сразу» означает один за другим, последовательно, потому что javascript - это отдельная задача за раз - как есть, ваш вопрос в лучшем случае слишком широк, но в значительной степени несовместим - вам нужно будет опубликовать некоторые данные –

+0

Сохранение всех результатов if в массиве? –

ответ

0

Если я правильно понимаю, вы wa нт знать, если:

либо некоторые тесты являются истинными

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

или каждый тест является ложным

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

оба одинаковы.

0
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 
+0

Пожалуйста, объясните код подробно, чтобы я мог узнать. – Tygari