Bonjour à tous,
Je cherche à faire une petite web app JS pour réviser le chiffrage d'accords Jazz.
Je bloque actuellement sur une incompréhension quant au typage dynamique.
Dans mon code je dois additionner plusieurs variables à priori entière, or, je récupère systématiquement NaN. Suspectant que JS transtypait en String, j'ai essayé de forcer le type en Entier (via parseInt()) mais sans succès.
Je dois certainement rater quelquechose, mais là je sêche !
Voilà ma sortie Firebug :
->showChord('Eb7');
base_position : 12
keys[chord.substr(0,1)] : 4
alteration : -1
NaN
Modifié par morieff (05 Oct 2015 - 15:32)
Je cherche à faire une petite web app JS pour réviser le chiffrage d'accords Jazz.
Je bloque actuellement sur une incompréhension quant au typage dynamique.
Dans mon code je dois additionner plusieurs variables à priori entière, or, je récupère systématiquement NaN. Suspectant que JS transtypait en String, j'ai essayé de forcer le type en Entier (via parseInt()) mais sans succès.
Je dois certainement rater quelquechose, mais là je sêche !
Voilà ma sortie Firebug :
->showChord('Eb7');
base_position : 12
keys[chord.substr(0,1)] : 4
alteration : -1
NaN
function showChord(chord) {
//Eb7
var keys = {C:0, D:2, E:4, F:5, G:7, A:9, B:11};
var alteration = 0;
var base_position = 12;
var fondamental = 0;
//find if there is any alteration
if (chord.substr(1,1) == 'b') {
alteration -= 1;
} else if (chord.substr(1,1) == '#') {
alteration += 1;
}
//determine where to put the chord for better visibility
//if 9th or 13th
//console.log(keys["E"]);
console.log("base_position : "+base_position);
console.log("keys[chord.substr(0,1)] : "+keys[chord.substr(0,1)]);
console.log("alteration : "+alteration);
//console.log("Number.isNaN(base_position) : " + Number.isNaN(base_position));
//console.log("Number.isNaN(keys[chord.substr(0,1)]) : "+Number.isNaN(keys[chord.substr(0,1)]));
//console.log("Number.isNaN(alteration)) : "+Number.isNaN(alteration));
//console.log("Number.isNaN(parseInt(parseInt(base_position,10) + parseInt(keys[chord.substr(1,1)],10),10)) : " +
// Number.isNaN
// (parseInt(
// parseInt(base_position,10) +
// parseInt(keys[chord.substr(1,1)],10)
// ,10)
// )
// );
//console.log("Number.isNaN(keys[chord.substr(1,1)] + alteration) : " + Number.isNaN(keys[chord.substr(1,1)] + alteration));
//console.log( "fondamental + base_position : "+ fondamental + base_position );
//console.log( "base_position + parseInt(keys[chord.substr(1,1)],10) : "+base_position + parseInt(keys[chord.substr(1,1)],10) );
//console.log( "keys[chord.substr(1,1)] + alteration : "+keys[chord.substr(1,1)] + alteration );
fondamental += base_position + keys[chord.substr(1,1)] + alteration;
//console.log("keys[chord.substr(1,1)] + alteration : "+keys[chord.substr(1,1)] + alteration);
//console.log("parseInt(keys[chord.substr(1,1)],10) : "+parseInt(keys[chord.substr(1,1)],10));
//console.log("parseInt(alteration,10) : "+parseInt(alteration,10));
console.log(fondamental);
//drawNote(fondamental);
}
Modifié par morieff (05 Oct 2015 - 15:32)