Skip to content

Instantly share code, notes, and snippets.

@Woodsphreaker
Last active August 1, 2017 20:46
Show Gist options
  • Save Woodsphreaker/20333a2e6c4ac8c61d53ac99509634ad to your computer and use it in GitHub Desktop.
Save Woodsphreaker/20333a2e6c4ac8c61d53ac99509634ad to your computer and use it in GitHub Desktop.
calcTable
/*
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