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

120
Vistas
Conversión de números, obteniendo indefinido

Estoy trabajando en un programa que, antes de que pueda hacer cualquier otra cosa, debe poder convertir números en otros números. El programa solo funciona con números del 0 al 11 (que representan notas musicales), por lo que cualquier valor mayor o menor debe convertirse en un número entre 0 y 11. Pero cuando ejecuto mi función, devuelve indefinido para muchos números.

 const TET = 12; const Notes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; function NoteConverter(note) { const doubled = TET * 2; const tripled = TET * 3; for (index in Notes) { if (note == index) { return index; } else if (note == index + TET || note == index - TET) { return index; } else if (note == index + doubled || note == index - doubled) { return index; } else if (note == index + tripled || note == index - tripled) { return index; } } }

Cuando ejecuto la función usando 15 como el número a convertir, obtengo indefinido en lugar de 3, al que debería convertirse.

He estado tratando de averiguar qué estoy haciendo mal, pero no puedo. ¿Alguna ayuda?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Concatenará una cadena para index + TET , por lo que, por ejemplo, si el índice es 0 index + TET será 012 , sucede porque typeof index es string y también es una cadena porque la palabra clave in también funciona para objetos, por lo que devolvería el nombre clave para el objeto que es No siempre es un número.

editar: así que tienes que ir con las notas como se sugiere en la otra respuesta o asegurarte de que se convierta primero en número;)

about 4 years ago · Santiago Trujillo Denunciar

0

Simplemente reemplace con de

 const TET = 12; const Notes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; function NoteConverter(note) { const doubled = TET * 2; const tripled = TET * 3; for (index of Notes) { if (note == index) { return index; } else if (note == index + TET || note == index - TET) { return index; } else if (note == index + doubled || note == index - doubled) { return index; } else if (note == index + tripled || note == index - tripled) { return index; } } } console.log(NoteConverter(15))

about 4 years ago · Santiago Trujillo 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