//Funciones de orden superior const sum = (f, a, b) => { if(a > b){ return 0; } else { return (f(a) + sum(f, a + 1, b)); } } const self = x => x; const cube = x => x * x * x; const sumInts = (a, b) => sum(self, a, b); const sumCubes = (a, b) => sum(cube, a, b); console.log(sumInts(2, 5)); console.log(sumCubes(1, 5)); //map, filter, reduce const obj = [{ nombre: 'Jorge', pais: 'Guatemala', edad: 25 }, { nombre: 'Eduardo', pais: 'El Salvador', edad: 20 }, { nombre: 'Maria', pais: 'EEUU', edad: 24 }, { nombre: 'Juan', pais: 'Mexico', edad: 28 } ]; const incremento = obj.map(persona => ({ ...persona, edad: persona.edad + 1 })); console.log(incremento); //reduce const suma = obj.reduce((total, persona) => total + persona.edad, 0); console.log(suma); //filter //personas mayores a 22 aƱos const mayores = obj.filter(persona => persona.edad > 22); console.log(mayores); //iteracion vs recursion vs recursion de cola //iteracion const sumIntegers = (i) => { let sum = 0 do { sum += i; i--; } while(i > 0); return sum; } //recursion const sumIntegersFunctional = i => { if(i == 0){ return i; } return (i + sumIntegers(i - 1)); } // console.log(sumIntegersFunctional(8)); //recursion de cola const sumIntegersTail = i => { const loop = (acc, i) => { if(i == 0){ return acc; } else { return loop(acc + i, i - 1); } } return loop(0, i); } console.log(sumIntegersTail(8));