2 votes

Pourquoi 10 est-il inférieur à 9 ?

J'ai une fonction switcher() qui a un argument Object, video . Il doit enregistrer 'Start' si video.start <= video.ende . Cela fonctionne bien dans la plupart des cas (exemple : video.start = 1 y video.ende = 3 ), mais lorsque le video.start = 9 y video.ende = 10 il enregistre 'End' .

function switcher(video)   
{
    console.log("Start: " + video.start);
    console.log("End: " + video.ende);

    if(video.start <= video.ende) // Not working correctly
    {
        console.log("Start");
    }
    else
    {
        console.log("End");
    }
}

console.log() succès :

console.log: addon: Start: 1
console.log: addon: End: 3
console.log: addon: Start

console.log() Échec :

console.log: addon: Start: 9
console.log: addon: End: 10
console.log: addon: End

Pourquoi en est-il ainsi ?
Comment puis-je résoudre ce problème ?

3voto

Barmar Points 135986

On dirait que video.start y video.ende sont des chaînes de caractères, et non des nombres, de sorte qu'elles sont comparées lexicographiquement, et non numériquement. Convertissez-les en nombres avant de les comparer.

if (Number(video.start) <= Number(video.ende))

Vous pouvez également corriger le code qui crée le video afin qu'il soit converti en nombre à ce moment-là.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X