Last active
August 1, 2017 20:46
-
-
Save Woodsphreaker/20333a2e6c4ac8c61d53ac99509634ad to your computer and use it in GitHub Desktop.
calcTable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Aqui é definido uma função para cada operação matemática | |
Cada função recebe 2 parametros a,b e depois é aplicada a aperação pertinente a cada uma, retornando o valor já calculado | |
*/ | |
const plus = (a = 0 , b = 0) => a + b | |
const times = (a = 0, b = 0) => a * b | |
const minus = (a = 0, b = 0) => a - b | |
const division = (a = 1, b = 1) => a / b | |
/* | |
Aqui é definido um array contendo os números que serão usados nos cálculos | |
*/ | |
const numbers = [1,2,3,4,5,6,7,8,9,10] | |
/* | |
As operações são referenciadas nesta fn, que por sua vez invoca cada fn por operação | |
*/ | |
const operations = (op, a,b) => { | |
return { | |
'+' : plus, | |
'-' : minus, | |
'x' : times, | |
'/' : division | |
}[op](a, b) | |
} | |
/* | |
Aplica a operação e concateca os reultados (reduce) | |
*/ | |
const applyOperation = (op, num) => (acc, cur) => { | |
acc += `${num} ${op} ${cur} = ${operations(op, num, cur)}\n` | |
return acc | |
} | |
/* | |
Percorre o array de numeros e chama cada operação necessária para completar a requisição | |
*/ | |
const calcTable = (op, num) => numbers.reduce(applyOperation(op, num), '') | |
console.log(calcTable('x', 4)) | |
console.log(calcTable('-', 4)) | |
console.log(calcTable('/', 4)) | |
console.log(calcTable('+', 4)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment