Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

170
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda