使用reduce来检查偶数/奇数 - 奇数的代码失败

时间:2016-05-19 19:17:50

标签: javascript reduce

函数ev调用reduce函数洞察它,并假设如果数组中的偶数(我传递给ev函数)则返回true,如果数组有奇数则假设返回false。我的代码适用于偶数,但是对于奇数而言却失败了(显示仍然是真的)并且我不知道为什么!有人知道为什么吗?

var even = function(num) {
    return num % 2 === 0;
};

function reduce(array, init, func) {
    var curr = init;
    for (var i = 0; i < array.length; i++) {
        curr = func(curr, array[i]);
    }
    return curr;
}

function ev(arr, func) {
    if (arr.length > 0) {
        if (reduce(arr, 0, func)) {
            return true;
        } else {
            return false;
        }
    }

    return true; //thats i the array is empty
}
ev([0, 11, 28], even);

1 个答案:

答案 0 :(得分:0)

也许您应该在Javascript中使用内置的var f = new Login(); f.Show(); //Shows form f.Close(); //Closes form / map函数?

reduce

修改1:

或者,更好的是,您可以使用偶数/奇数乘法的属性来检查以确保数组元素的乘积是偶数:

function isEven(val) {return !(val % 2)}

function or(a, b) {return a || b}

function containsEven(arr) 
{
    return arr.map(isEven).reduce(or)
}

编辑2:

现在我们很清楚我们想要检查数组中的所有元素是否均匀,我们将得到以下代码:

function mult(a, b) { return a * b }

function containsEven(arr)
{
    return !(arr.reduce(mult) % 2)
}