JSFiddle - React, Tailwind, and code Playground
by Md. Atiquzzaman Soikat
JavaScript
/* Higher Order Function */
const multiplyByTwo = function(number) {
return number * 2;
}
const multiplyByFour = function(number) {
return number * 4;
}
const multiplyArray = function(array, fn) {
return array.map(item => fn(item))
}
const multiplyArrayByTwo = multiplyArray(multiplyByTwo)
const multiplyArrayByFour = multiplyArray(multiplyByFour)
//console.log(multiplyArrayByTwo)
//console.log(multiplyArrayByFour)
function evaluatesToFive(num, fn) {
return fn(num) === 5;
}
function divideByTwo(num) {
return num / 2;
}
//console.log(evaluatesToFive(10, divideByTwo))
//console.log(evaluatesToFive(20, divideByTwo))
function multiplyBy(num1) {
return function(num2) {
return num1 * num2;
};
}
const multiplyByThree = multiplyBy(3);
const multiplyByFive = multiplyBy(5);
//console.log(multiplyByThree(3))
//console.log(multiplyByFive(5))
// we will validate a object using higher order function
const newUser = {
age: 24,
password: 'some long password',
agreeToTerms: true,
};
function oldEnough(user) {
return user.age >= 18;
}
function passwordLongEnough(user) {
return user.password.length >= 8;
}
function agreeToTerms(user){
return user.agreeToTerms === true;
}
function validateObject(object, ...tests) {
for (let i = 0; i < tests.length; i++) {
if (tests[i](object) === false) {
return false;
}
}
return true;
}
const user1 = {
age: 20,
password: 'password',
agreeToTerms: false,
}
function createValidator(...tests) {
return function(object){
for (let i = 0; i < tests.length; i++) {
if (tests[i](object) === false) {
return false;
}
}
return true;
}
}
const userValidator = createValidator(
oldEnough, passwordLongEnough, agreeToTerms
)
console.log(userValidator(user1))
console.log(userValidator(newUser))