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

211
Visualizações
¿Consejos de Javascript .reduce()? ¿Hay alguna manera de cambiar el nombre del grupo 'indefinido'?

Estoy tratando de entender la función .reduce() y la mejor manera de hacer lo siguiente.

Tengo el siguiente código:

 const products = [ { name: 'apples', category: 'fruits' }, { name: 'oranges', category: 'fruits' }, { name: 'potatoes', category: 'vegetables' } ]; const groupByCategory = products.reduce((group, product) => { const { category } = product; group[category] = group[category] ?? []; group[category].push(product); return group; }, {});

Quiero agregar un producto sin propiedad de 'categoría' y quiero que se inserte en una clave específica en lugar de agruparse en "indefinido", así que lo edité para:

 const products = [ { name: "apples", category: "fruits" }, { name: "oranges", category: "fruits" }, { name: "potatoes", category: "vegetables" }, { name: "guava"} ]; const groupByCategory = products.reduce((group, product) => { const { category } = product ; // check if 'category' exists, if it doesn't store it as an empty array to push to group[category] = group[category] ?? []; // if category is undefined, push it into 'nocategory'. Otherwise push into relevant. if(!category){ group['nocategory'].push(product); } else { group[category].push(product); }; return group; }, {'nocategory':[]}); console.log(JSON.stringify(groupByCategory, null, 2));

En su mayor parte, funciona (todavía hay un grupo 'indefinido', pero al menos el objeto se coloca en el grupo correcto).

Estoy seguro de que hay una mejor solución/manera adecuada de hacer esto. Cualquier indicador sería apreciada.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Estás creando indefinido aquí

 group[category] = group[category] ?? []; // category can be undefined

Mover la creación a la declaración if-else

 const products = [ { name: "apples", category: "fruits" }, { name: "oranges", category: "fruits" }, { name: "potatoes", category: "vegetables" }, { name: "guava"} ]; const groupByCategory = products.reduce((group, product) => { const { category } = product ; // check if 'category' exists, if it doesn't store it as an empty array to push to // removed // if category is undefined, push it into 'nocategory'. Otherwise push into relevant. if(!category){ group['nocategory'].push(product); } else { group[category] = group[category] ?? [] // HERE group[category].push(product); }; return group; }, {'nocategory':[]}); console.log(JSON.stringify(groupByCategory, null, 2));

about 4 years ago · Juan Pablo Isaza Relatório

0

En lugar de un bloque condicional completamente nuevo, puede establecer un valor predeterminado en la desestructuración y luego agrupar como de costumbre.

 const { category = 'nocategory' } = product; 

 const products = [ { name: "apples", category: "fruits" }, { name: "oranges", category: "fruits" }, { name: "potatoes", category: "vegetables" }, { name: "guava"} ]; const groupByCategory = products.reduce((group, product) => { const { category = 'nocategory' } = product; group[category] ??= []; group[category].push(product); return group; }, {}); console.log(JSON.stringify(groupByCategory, null, 2));

Nota: también puede utilizar la asignación lógica nula (??=)

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