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

114
Vistas
Devolver 2 variables en Javascript - Aplicación Nodjs

Quiero encontrar un elemento y el índice de este elemento dentro de la matriz y almacenarlo en 2 variables separadas. Bastante nuevo en programación pero luchando por resolver el problema. Intenté destruir pero no funciona.

 const [{item:item,index:index}] = notification.pendingQueue.forEach((item,index)=> { if(item.taskId.toString() === req.params.taskId) return [{item, index}]; })

Intenté esto también

 const data = notification.pendingQueue.forEach((item,index)=> { if(item.taskId.toString() === req.params.taskId) return ({'item': item, 'index': index}) }) console.log("item", data.item );

estoy recibiendo este error

undefined no es iterable (no se puede leer la propiedad Symbol(Symbol.iterator)) TypeError: undefined no es iterable (no se puede leer la propiedad Symbol(Symbol.iterator))

------ Editar -------------

Como sugirió el miembro de la comunidad, probé el método .map pero ahora el problema es que obtengo resultados como este si el segundo elemento coincide con la condición.

 [undefined, {item,index}, undefined]

por lo que hacer la destrucción de objetos se está convirtiendo en un problema. Quiero que la matriz final contenga solo el objeto coincidente y elimine todos los valores indefinidos.

 const [{ item, index }] = notification.pendingQueue.map((item,index)=> { if(item.taskId.toString() === req.params.taskId) return { item, index }; }) ;
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Array.forEach no devuelve ningún valor. Deberías usar el mapa en su lugar:

 const [{ item, index }] = notification.pendingQueue.map((item,index)=> { if(item.taskId.toString() === req.params.taskId) return { item, index }; }) ;

Tenga en cuenta que el item y el index pueden no estar definidos si no se cumple su condición.

Para eliminar indefinido, puede encadenar el resultado del mapa con Array.filter :

 const [{ item, index }] = notification.pendingQueue.map((item,index)=> { if(item.taskId.toString() === req.params.taskId) return { item, index }; }).filter(elem => elem !== undefined) ;
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede devolver múltiples valores de una función envolviéndolos en un iterable. Vea este enlace sobre la asignación de desestructuración.

 function coordinates (country = null) { if (!country) return [-1, -1]; // ... let lat = "19.9823"; let lon = "0.9039"; return [lat, lon]; } const [a, b] = coordinates("London, UK");

O

 function coordinates (country = null) { if (!country) return {-1, -1}; // ... let lat = "19.9823"; let lon = "0.9039"; return {lat, lon}; } const {lat, lon} = coordinates("Tokyo, JP");
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