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

86
Vistas
Javascript indexOf no definido

Estoy trabajando en una aplicación web simple que esencialmente le permite a un guitarrista convertir acordes en función de las posiciones de su cejilla; en realidad no tienes que saber lo que eso significa, pero podría ser útil si lo sabes jajaja. Lo hice funcionar para una entrada de un solo acorde, pero quiero que el usuario pueda ingresar múltiples acordes para transponer, por lo que el objetivo es que ingresen múltiples acordes que se almacenarán en una matriz. A partir de ahí, tengo una matriz preestablecida de caracteres para cada posible acorde y he escrito una función de bucle anidado para buscar en la matriz de posibles acordes para que puedan devolver el número de índice de ese posible acorde.

 let chordShapes = ["E", "F", "F# / Gb", "G", "G# / Ab", "A", "A# / Bb", "B", "C", "C# / Db", "D", "D# / Eb"];

Por ejemplo, el usuario ingresa los acordes A y E, que se ingresarán en una matriz llamada inpArr. A partir de ahí, quiero que la función devuelva el índice de los acordes coincidentes en una matriz llamada inputChords, por lo que en este caso la nueva matriz debería ser [5,0] después de esta función, y desde allí debería poder terminar esto. . Sin embargo, recibo el error que dice que indexOf no está definido en la función. Aquí está la función junto con las matrices relevantes:

 let inputChords = ["A", "E"]; function findNums(inpArr){ let newArr = []; for(let i=0; i<inpArr.length-1; i++){ for(let j=0; j<chordShapes.length-1; j++){ if(inpArr[i]==chordShapes[j]){ newArr[i] = indexOf(chordShapes[j]); console.log(`inputNum: ${newArr[i]}`); } } return newArr; } }; findNums(inputChords);

Veo en otras respuestas que la discrepancia podría deberse a que indexOf se usa para cadenas y matrices (sé que las cadenas son un tipo de matriz), pero definitivamente son ambas. Todas las otras preguntas que he visto sobre esto parecen ser sobre programas por encima de mi experiencia, por lo que no estoy seguro de cómo aplicar sus soluciones a mi propio problema aquí. Cualquier ayuda sería apreciada :)

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Parece que hay un error tipográfico, donde indexOf debería ser cordShapes.indexOf . Sin embargo, arreglar esto no resolverá los problemas asociados con las firmas de clave que usan diferentes incidentales para el mismo acorde, y requiere que los usuarios usen con precisión la tecla de mayúsculas.

Un enfoque puede ser escribir en minúsculas la entrada del usuario y utilizar un objeto de búsqueda para las armaduras de clave. P.EJ:

 const chordShapes = { "e": 0, "f": 1,"f#": 2,"gb": 2,"g": 3, "g#": 4,"ab":4 ,"a": 5, "a#": 6, "bb": 6,"b": 7,"c": 8, "c#": 9,"db": 9,"d": 10,"d#": 11,"eb": 11 }; let inputChords = ["A", "E"]; function findNums(inpArr){ return inpArr.map( signature=> chordShapes[ signature.toLowerCase()] ); } console.log( findNums(inputChords) );

Esto sigue siendo demasiado simple: es posible que desee validar y clasificar los nombres de los acordes antes de buscar un índice para su tablatura. El objetivo sería determinar por separado el desplazamiento del semitono del acorde con respecto a E, la variación del acorde (es decir, mayor/menor, disminuida, aumentada, 6.ª, 7.ª, 9.ª, etc.) o si la notación del acorde no es compatible.

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