Que boa prática deveria implementar para encontrar que existem 2 parcelas iguais de 5187,66 e saber a que parcela corresponde (que seria parcela 4 e 10)?
O problema é que não sei o valor das parcelas que são iguais…no exemplo que te dei sabemos porque tive que exemplificar. Mas esse valores são dinâmicos. Além disso, precisaria saber quantas vezes se repete as parcelas de 821.39 (como comentei anteriormente os valores dessas parcelas são dinâmicos).
A resposta que precisaria chegar seria:
São 8 parcelas de 821,39 e 2 parcelas de 5187,66, nos meses 4 e 10.
Nesse caso você tem que agrupar por valor. E para cada valor, criar um array de meses:
const parcelas_financiamento = {
"1": 821.39,
"2": 821.39,
"3": 821.39,
"4": 5187.66,
"5": 821.39,
"6": 821.39,
"7": 821.39,
"8": 821.39,
"9": 821.39,
"10": 5187.66,
}
const result = {};
for (const [mes, valor] of Object.entries(parcelas_financiamento)) {
// para cada valor, cria um array contendo os meses
if (! result[valor])
result[valor] = [];
result[valor].push(mes);
}
//------------------ Mostrar os valores e respectivos meses
// NumberFormat é só pra mostrar o valor formatado como moeda (opcional, claro, depende do que você quer)
const formato = new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }); // supondo valores em reais
for (const [valor, meses] of Object.entries(result)) {
console.log(`${meses.length} parcelas de ${formato.format(valor)} nos meses: ${meses.join(", ")}`);
}
Neste caso o ESLint não recomenda a utilização do for - of.
iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations.
const parcelas_financiamento = {
"1": 821.39,
"2": 821.39,
"3": 821.39,
"4": 5187.66,
"5": 821.39,
"6": 821.39,
"7": 821.39,
"8": 821.39,
"9": 821.39,
"10": 5187.66,
}
const result = {};
var entries = Object.entries(parcelas_financiamento);
for (var i = 0; i < entries.length; i++) {
// para cada valor, cria um array contendo os meses
const mes = entries[i][0];
const valor = entries[i][1];
if (! result[valor])
result[valor] = [];
result[valor].push(mes);
}
//------------------ Mostrar os valores e respectivos meses
// NumberFormat é só pra mostrar o valor formatado como moeda (opcional, claro, depende do que você quer)
const formato = new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }); // supondo valores em reais
entries = Object.entries(result);
for (var i = 0; i < entries.length; i++) {
var valor = entries[i][0];
var meses = entries[i][1];
console.log(`${meses.length} parcelas de ${formato.format(valor)} nos meses: ${meses.join(", ")}`);
}