2016-02-05 115 views
0

我有許多可變長度的函數數組,其中數組中的每個函數接受相同類型的單個參數並返回true或false。如何將布爾函數數組合併成一個布爾函數?

如何將這些函數「合成」到一個函數中,以測試每個組件函數是否返回true?

var less_than = function(y) { 
    function(x) { 
    return x < y; 
    } 
} 

var greater_than = function(y) { 
    function(x) { 
    return x > y; 
    } 
} 

var is_even = function(x) { 
    return x % 2 == 0; 
} 

var fns = [less_than(10), greater_than(1), is_even]; 

var test_function = combine_tests(fns); 
test_function(8) // => true 

回答

4

的每()方法測試數組中的所有元素是否通過測試 通過所提供的功能來實現。

var functions = [f1, f2, f3]; 
var arg = "foo"; 
var result = functions.every(function(func){ 
    return func(arg); 
});