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

175
Visualizações
Estoy tratando de usar .filter, .sort y .reduce en una matriz de números para devolver una cadena separada por una coma y un espacio

Se supone que debo escribir una función que tome una matriz de números y devuelva una cadena. Se supone que la función usa filter, sort AND reduce para devolver una cadena que contiene solo números impares, separados por comas en orden ascendente.

Parece que no puedo hacer que mi método .reduce realmente devuelva nada y mis condiciones if no parecen funcionar correctamente... (por ejemplo, agrega una coma y un espacio después de la salida del último número como este "3 , 17, ")

Aquí está el código que he hecho hasta ahora...

 const numSelectString = (numArr) => { // use .filter to select only the odd numbers numArr.filter((num) => num % 2 !== 0) // use. sort to sort the numbers in ascending order .sort((a,b) => ab) // use reduce to create the string and put the commas and spaces in .reduce((acc, next, index) => { if (index+1!==undefined) { return acc = acc + next + ', ';; } else { return acc + next; } },'') } const nums = [17, 34, 3, 12] console.log(numSelectString(nums)) // should log "3, 17"

¿Alguien tiene tiempo para ayudarme a resolver mi método de reducción? Traté de pasar el índice para determinar si reduce está iterando en el último elemento para no generar el "," después del último elemento... pero no lo he hecho funcionar... Además, todavía no entiendo ¡Por qué sigo obteniendo "indefinido" como mi salida!

¡Gracias por cualquier ayuda!

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

0

Puede reemplazar el cheque simplemente tomando la suma y sin un valor inicial.

 const numSelectString = numArr => numArr .filter((num) => num % 2 !== 0) .sort((a, b) => a - b) .reduce( (acc, next, index) => index ? acc + ', ' + next : next, '' ); console.log(numSelectString([17, 34, 3, 12])); console.log(numSelectString([2, 4, 6])); console.log(numSelectString([1, 2]));

about 4 years ago · Juan Pablo Isaza Relatório

0

En lugar de usar index+1!==undefined , prueba esto

 const numSelectString = (numArr) => { const numArrLength = numArr.length; const arr = [...numArr]; arr .filter((num) => num % 2 !== 0) .sort((a,b) => a - b) .reduce((acc, next, index) => { if (index < numArrLength - 1) return acc += `${next}, `; else return acc + `${next}`; }, "") return arr; }

También se considera una buena práctica no mutar los parámetros.

Otro método

Usar el método .join() lo hace mucho más fácil.

 const numSelectString = (numArr) => { const arr = [...numArr] arr .filter((num) => num % 2 !== 0) .sort((a,b) => ab) .join(", "); return arr; }
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