函数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);
答案 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)
}