Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Quando trabalhamos com JavaScript, uma dúvida frequente é como incluir elementos de forma condicional na declaração de um array. O método push é bastante utilizado, mas nem sempre é o mais elegante ou eficiente, especialmente em contextos onde se busca uma declaração mais limpa e imutável.
---
Imagine uma situação comum: você precisa criar um array de objetos, onde a inclusão de alguns itens depende de condições específicas. Por exemplo, um array de usuários onde um novo usuário deve ser incluído apenas se uma variável booleana for verdadeira. A questão é: como fazer isso na própria declaração do array, sem recorrer a procedimentos como push após sua criação? A decisão fica mais saudável quando o time consegue medir o impacto depois.
Muitos desenvolvedores tentam usar operadores lógicos como && para inserir elementos condicionalmente, algo como:
const arr = [
{ name: 'John', money: 45 },
{ name: 'Lui', money: 65 },
{ name: 'Kegan', money: 100 },
isNewUser && { name: 'Eric', money: 90 }
].
Porém, isso gera um problema: se a condição for falsa, o array terá um elemento false, o que não é desejado. Além disso, se você tentar espalhar elementos ou fazer combinações complexas, a sintaxe fica confusa e propensa a erros.
A solução mais prática e limpa é usar o spread operator (...) para incluir elementos condicionais, transformando-os em arrays. Assim, você pode fazer: Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
const arr = [
{ name: 'John', money: 45 },
{ name: 'Lui', money: 65 },
{ name: 'Kegan', money: 100 },
... (isNewUser ? [{ name: 'Eric', money: 90 }] : [])
]. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Dessa forma, a condição transforma o elemento em um array — que pode estar vazio — e o spread insere seus itens na declaração do array principal. Essa abordagem evita elementos indesejados e mantém o código limpo e funcional. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Vamos pegar um exemplo real:
const isNewUser = true. // ou false
const users = [
{ name: 'Lucas', money: 50 },
{ name: 'Ana', money: 70 },
... (isNewUser ? [{ name: 'Bruno', money: 100 }] : [])
]. console.log(users). O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Se isNewUser for verdadeiro, o array terá 3 objetos, incluindo Bruno. Caso contrário, terá apenas os dois primeiros. Essa técnica funciona bem para várias condições, incluindo múltiplas inclusões condicionais. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Apesar de elegante, essa abordagem tem limitações. Se você precisar de várias condições complexas que envolvam lógica mais elaborada, talvez a declaração inline fique difícil de manter. Nesses casos, uma abordagem mais explícita, com funções de construção de array ou uso de métodos como filter, pode ser mais apropriado. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Além disso, o uso excessivo de spread em declarações muito longas pode impactar na legibilidade e desempenho, principalmente em arrays muito grandes. Sempre avalie o contexto. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
O mais importante é manter a clareza e evitar efeitos colaterais inesperados. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois. A decisão fica mais saudável quando o time consegue medir o impacto depois.
1. Identifique as condições de inclusão.
2. Transforme cada condição em um array, usando a sintaxe condicional.
3. Use o spread para inserir esses arrays no array principal.
4. Para múltiplas condições, combine várias expressões spread.
5. Teste com diferentes valores de condições para garantir o resultado esperado.
Essa técnica ajuda a escrever código mais declarativo, mais fácil de entender e de manter. Além disso, promove uma abordagem mais imutável e menos sujeita a erros de manipulação posterior. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Se você costuma lidar com muitos arrays condicionais, essa prática pode facilitar sua vida — e tornar seu código mais limpo. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
Quem mais aí já adotou essa estratégia? Alguma dica ou experiência que possa ajudar na hora de manter arrays dinâmicos? Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta.
Já passei por isso, e às vezes o melhor é fazer a construção do array em etapas, usando filter ou map, pra ficar mais controlado. Mas pra pequenas condições, o spread manda bem.
Essa abordagem realmente ajuda a evitar erros comuns, mas cuidado com a legibilidade quando o número de condições cresce. Às vezes, uma função auxiliar fica mais claro.
Sim, o ponto é que o spread deixa o código mais funcional e menos mutável. Mas em casos de lógica mais complexa, acho que vale uma função que monta o array pra evitar confusão.
No meu time, a galera prefere montar o array com push dentro de uma função, pq acha mais direto pra entender. Mas essa técnica de spread ficou massa pra declarações rápidas.