Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

131
Visualizações
¿Cuál es el papel de los paréntesis en esta expresión de javascript?

Encontré este breve fragmento ( AQUÍ )

 const pick = (obj, arr) => arr.reduce((acc, curr) => (curr in obj && (acc[curr] = obj[curr]), acc), {});

Y no entiendo el papel de los paréntesis en esta parte.

 (curr in obj && (acc[curr] = obj[curr]), acc)
 () => (... && (... = ...), ...) // First, parentheses after the arrow function means we are returning what is inside () => (...) // This looks like a short if statement curr in obj && ... // Why are we grouping the assignment into parentheses here? (acc[curr] = obj[curr]) // What does (..., ...) is supposed to to () => (... && (...), acc)
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Los paréntesis son obligatorios porque, de lo contrario, esta expresión:

 curr in obj && acc[curr] = obj[curr]

sería una sintaxis no válida, porque el lado izquierdo de = se evaluaría como curr in obj && acc[curr] (una expresión), no una referencia a la que se pueda asignar.

Pero este es un código horrible, es bastante confuso. Una versión mucho mejor sería

 const pick = (obj, arr) => { const output = {}; for (const curr of arr) { if (curr in obj) { output[curr] = obj[curr] } } return output; };

Eso es mucho más fácil de entender de un vistazo, ¿no?

Otra opción es filtrar las entradas del objeto:

 const pick = (obj, arr) => Object.fromEntries( Object.entries(obj) .filter(([key]) => arr.includes(key)) );
about 4 years ago · Juan Pablo Isaza Relatório

0

Este:

 (curr in obj && (acc[curr] = obj[curr]), acc)

es otra forma de escribir lo siguiente:

 if (curr in obj) { acc[curr] = obj[curr]; } return acc;

No solo la frase de una sola línea es menos legible, sino que también se puede considerar que abusa del operador de coma .

La legibilidad del código es más importante que escribir menos líneas de código.

// ¿Qué se supone que debe hacer (..., ...)?

 () => (... && (...), acc)

Paréntesis en la siguiente expresión:

 (curr in obj && (acc[curr] = obj[curr]), acc)

asegurarse de que:

  1. La expresión general se evalúa como una sola expresión que consta de varias subexpresiones

  2. La asignación se evalúa sin la parte curr in obj && porque sin esos paréntesis, curr in obj && acc[curr] = obj[curr] no es una sintaxis válida.

    Entre paréntesis, la expresión:

     (acc[curr] = obj[curr])

    evaluará el valor de obj[curr] . Entonces la expresión:

     curr in obj && (acc[curr] = obj[curr])

    se convertirá:

     curr in obj && <assignment value>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda