1
resposta

Dúvida sobre resultados no terminal

Olá, tudo bom?

Ao terminar de resolver o desafio proposto, decidi questionar algo que me chama atenção há algum tempo. Acredito que seja algo até bobo, mas algumas vezes, ao rodar algum código, a formatação dos resultados vem todos em uma linha ou com cada informação em um sua linha própria no terminal.

Segue o meu código com o desafio concluído:

const clientes = [
    {
        nome: "Andre",
        cpf: "12121212121",
        dependentes: [
            {
            nome: "Sara",
            parentesco: "filha",
            dataNascimento: "20/03/2011" 
            },
            {
            nome: "Sabrina",
            parentesco: "filha",
            dataNascimento: "04/01/2014"
            }
        ],
    },
    {
        nome: "Juliana",
        cpf: "56756756756",
        dependentes: [
            {
            nome: "Sophia",
            parentesco: "filha",
            dataNascimento: "30/08/2020"
            }
        ]
    }
]

let listaDependentes = "";

for (i = 0; i < clientes.length; i++) {
    listaDependentes = [...clientes[i].dependentes, ...clientes[++i].dependentes];
}

console.log(listaDependentes);
console.table(listaDependentes);

E aqui está como meu terminal ficou ao rodar o código:

Imagem do meu terminal mostrando a dois objetos com informações impressas em uma única linha e outro não

Veja que os objetos da dependentes Sara e Sophia vieram impressos todos em apenas uma linha. Já a dependente Sabrina teve seus valores impressos em linhas próprias. Por que isso acontece?

Obrigado.

1 resposta

Boa noite Vitor, tudo certo?

Na verdade você trouxe uma ótima indagação. Questionamentos fora da caixa como esses são ótimas oportunidades para entender melhor o funcionamento de uma determinada linguagem ou ferramenta e conhecer melhor as decisões que são tomadas no desenvolvimento delas. E, além disso, você exemplificou muito bem qual era a sua dúvida e ainda providenciou um exemplo. Meus parabéns!

Buscando na documentação e no código fonte do próprio Node, eu não consegui achar nenhuma menção à essa lógica implícita de quebra de linhas, apesar de ter a dica que o util.format() possa conter alguma responsabilidade sobre isso.

Testando o código que você providenciou, eu notei que ao alterar o nome de Sabrina para Sara, o objeto que era mostrado colapsava e aparecia em apenas uma linha, então isso corrobora com a hipótese de que as quebras de linhas no console.log() começam a acontecer entre os seus atributos caso o objeto tenha uma quantidade de caracteres acima de um determinado limite.

Caso você queira fugir dessa forma arbitrária de exibição dos dados, é possível utilizar um especificador de formatos como neste tutorial da documentação.

Outra coisa que descobri durante essa pesquisa é que a forma de fazer logs em JavaScript foi padronizada e tem um documento sendo ativamente desenvolvido aqui na tentativa de tornar as diferentes implementações da classe Console mais parecidas. Recomendo a leitura.

Espero ter ajudado e bons estudos. Continue assim!