JSFiddle - React, Tailwind, and code Playground
by tobyworth
JavaScript
function forEach(arr, action){
for(let i=0; i<arr.length; i++){
action(arr[i]);
}
}
function reduce(func, base, arr){
forEach(arr, function(elm){
base += func(elm) ? 1 : 0;
});
return base;
}
let isZero = () => {
return function(element){
return 0 === element;
}
}
let isNum = (x) => {
return function(element){
return x === element;
}
}
let isMultiple = (x) => {
return function(element){
return element % x === 0;
}
}
let isSharedMultiple = (x, y) => {
return function(element){
return element % x === 0 && element % y === 0;
}
}
function count(func, arr){
return reduce(func, 0, arr);
}
function countZeroes(arr){
return count(isZero(), arr);
}
alert(countZeroes([0,1,2,3,0,0])); // 3
alert(countZeroes([1,2,3])); // 0
alert(count(isNum(2), [1,2,3])); // 1
alert(count(isMultiple(2), [1,2,3,4])); // 2
alert(count(isSharedMultiple(2,4), [1,2,3,4])); // 1
alert(count(isSharedMultiple(3,9), [1,2,3,4,9,27])); // 1
//alert(count([1,2,3,4], isMultiple(2));