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

179
Vistas
Javascript: una función devolvió un valor pero cuando lo consuelo. Lo registro, siempre muestra indefinido

 var testData = [{'date': '10:45', 'electricity': 0.49, 'temp': 49}, {'date': '11:00', 'electricity': 0.14, 'temp': 50}, {'date': '11:15', 'electricity': 0.87, 'temp': 35}] function findData(time){ testData.forEach(function(item){ if(item['date'] == time){ console.log('item: ', item); var result = new Array(item['electricity'], item['temp']) console.log('result: ', result) return result; } }) } var a = findData('10:45'); console.log(a)

¿Alguna idea de por qué console.log (a) da indefinido? Investigué un poco pero no obtuve la respuesta :(

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

No puede regresar de una devolución de llamada para Array#forEach y necesita al menos una declaración de devolución en el bloque de funciones para obtener un valor diferente como undefined .

En su lugar, podría encontrar el objeto con Array#find , desestructurar las propiedades deseadas y devolver una matriz de valores.

 function findData(data, time) { const result = data.find(({ date }) => date === time); if (result) { const { electricity, temp } = result; return [electricity, temp]; } } var testData = [{ date: '10:45', electricity: 0.49, temp: 49 }, { date: '11:00', electricity: 0.14, temp: 50 }, { date: '11:15', electricity: 0.87, temp: 35 }] var a = findData(testData, '10:45'); console.log(a)

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tu función necesita devolver algo. Además, devolver algo de la devolución de llamada forEach() no lo hará; tienes que almacenar ese resultado en una variable que sea visible para findData() :

 function findData(time){ var r; testData.forEach(function(item){ if(item['date'] == time){ console.log('item: ', item); var result = new Array(item['electricity'], item['temp']) console.log('result: ', result) r = result; } }) return r; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Debido a que no detuvo el ciclo forEach después de encontrar el resultado, el ciclo continúa con el siguiente índice. Hay muchas maneras de lograr el resultado que necesita. Array.find es una forma.

 var testData = [{'date': '10:45', 'electricity': 0.49, 'temp': 49}, {'date': '11:00', 'electricity': 0.14, 'temp': 50}, {'date': '11:15', 'electricity': 0.87, 'temp': 35}] function findData(time){ const foundItem = testData.find(function(item){ return item['date'] == time; }); console.log('item: ', foundItem); const result = new Array(foundItem['electricity'], foundItem['temp']) console.log('result: ', result) return result; } var a = findData('10:45'); console.log(a)

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