Created
May 20, 2021 20:11
-
-
Save jmurowaniecki/a2263fef7c53555cf7a83cf27e3b1782 to your computer and use it in GitHub Desktop.
Um script de exemplo para ajudar a calcular experiência e custos afim de chegar em um salário razoável.
This file contains 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
const CalculaSalário = (function (Referencial) { | |
let ReferenciaGlobal = 0; | |
Object.prototype.toString = function () { | |
let VALORES = 0; | |
for (let xp in this) { | |
if (!!parseInt(this[xp])) { | |
VALORES += this[xp]; | |
} | |
} | |
return VALORES; | |
}; | |
Object.prototype.toInt = function () { | |
return parseInt(`${this}`, 10); | |
} | |
this.Experiência = {}; | |
this.Gastos = {}; | |
this.Gastos.adicionar = (descrição, valor) => { | |
this.Gastos[descrição] = valor; | |
return this.Gastos; | |
}; | |
this.Experiência.adicionar = (descrição, anos, éCumulativo) => { | |
this.Experiência[descrição] = 8 * 4 * 12 * anos; | |
if (éCumulativo) { | |
ReferenciaGlobal += this.Experiência[descrição]; | |
} | |
return this.Experiência; | |
}; | |
this.Salario = { | |
Justo: (base) => { | |
let gastos = this.Gastos.toInt(); | |
return (ReferenciaGlobal + this.Experiência[base] + (gastos + (gastos / 3))).toFixed(2); | |
} | |
} | |
return this; | |
}()); | |
const John = CalculaSalário; | |
John | |
.Gastos | |
.adicionar('Moradia+IPTU', 2000) | |
.adicionar('Cesta_Básica', 800) | |
.adicionar('Água, Luz, Gás', 300) | |
.adicionar('Internet', 150) | |
.adicionar('Gasolina', 500) | |
.adicionar('Netflix, Amazon, Disney, Spotify', 100) | |
.adicionar('IPVA+Seguro', 100) | |
.adicionar('Plano saúde', 300 * 2) | |
.adicionar('Gastos familiares previstos', 500) | |
.adicionar('Diversão+Gastos ocasionais', 200); | |
[ | |
['php', 20], | |
['js', 12], | |
['python', 10], | |
['c#', 6], | |
['vb', 6] | |
].forEach(job => { | |
let [descrição, tempo] = job; | |
John | |
.Experiência | |
.adicionar(descrição, tempo); | |
console.log(`…Para o cargo de ${descrição.toUpperCase().padEnd(6, ' ')} seria de R$${John.Salario.Justo(descrição).padStart(9, ' ')}`); | |
}); | |
John | |
.Experiência | |
.adicionar('sql', 22, 1) | |
.adicionar('dev', 20, 1) | |
.adicionar('universidade', 3, 1); | |
console.log(`\nPela experiência geral R$ ${John.Experiência}, pela necessidade R$ ${John.Gastos}.`); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment