2015-11-03 1 views
0

J'ai un code qui compare deux chaînes et renvoie celui avec la valeur la plus basse, puis compare cette valeur à letterGrade pour voir laquelle est la plus basse et retourne ensuite la plus élevée des deux. Mon problème est que j'ai des problèmes pour faire fonctionner ce code en utilisant javascript. code Javascript:Traduire java en javascript en utilisant compareTo

var result1 = (finalexam.getletterGrade().compareTo(midexam.getletterGrade())); 
    var result2 = " "; 
    if (result1 == 0) 
    { 
     result2 = midexam.getletterGrade(); 
    } 
    else if (result1 < 0) 
    { 
     result2 = midexam.getletterGrade(); 
    } 
    else if (result1 > 0) 
    { 
     result2 = finalexam.getletterGrade(); 
    } 
    var result3 = (letterGrade.compareTo(result2)); 
    if (result3 < 0) 
    { 
     result2 = letterGrade; 
    } 
+3

Si vous voulez corriger votre Javascript; poster le Javascript, pas le Java. –

+0

Qu'avez-vous essayé en javascript? Notez également que javascript et java ne sont pas des langues étroitement liées, copier-coller ne fonctionnera pas. –

+0

J'ai modifié ma question avec le code javascript. J'ai essayé localeCompare qui n'a pas fonctionné. CompareTo est le seul moyen que je connaisse pour résoudre ce problème et je n'arrive pas à le faire fonctionner en javascript. – littlemisschik

Répondre

0

JavaScript int ne dispose pas d'un compareTo ternaire comme Java. Vous pourriez en écrire un. Quelque chose comme,

function compare(a, b) { 
    if (a < b) { 
     return -1; 
    } else if (a > b) { 
     return 1; 
    } 
    return 0; 
} 

changer ensuite vos appels compareTo pour l'appeler. Quelque chose comme

var result1 = compare(finalexam.getletterGrade(), midexam.getletterGrade()); 

et

var result3 = compare(letterGrade, result2); 
0

mon problème était que notre code backend triée notre contenu à l'aide compareTo de Java, en raison d'un malentendu, je tentais de réécrire compareTo en JavaScript, alors que le correctif a fini par quelque chose de complètement différent, mais cela peut résoudre votre problème

String.prototype.compareTo = function (anotherString) { 
    var len1 = this.length; 
    var len2 = anotherString.length; 
    var n = Math.min(len1,len2); //If the lengths will always be the same skip n to be assigned to len1 only, get rid of len2 
    var v1 = this; 
    var v2= new String(anotherString); 
    // You could instead set these vars i and j to passed in offsets if you want to start sorting from, in which case else case will be possible, or only the first i == j if statement will always be run 
    var i = 0; 
    var j = 0; 

    if (i == j) { 
     var k = i; 
     var lim = n + i; 
     while (k < lim) { 
      var c1 = v1[k]; 
      var c2 = v2[k]; 
      if (c1 != c2) { 
       var returnVal = c1.charCodeAt(0) - c2.charCodeAt(0); 
       if (returnVal > 0) 
        return 1; 
       else 
        return -1 
       return 0; 
      } 
      k++; 
     } 
    } else { 
     while (n-- != 0) { 
      var c1 = v1[i++]; 
      var c2 = v2[j++]; 
      if (c1 != c2) { 
       var returnVal = c1.charCodeAt(0) - c2.charCodeAt(0); 
       if (returnVal > 0) 
        return 1; 
       else 
        return -1 
       return 0; 
      } 
     } 
    } 
    return len1 - len2; 
    //return 0; //if lengths are always the same, comment the above line, uncomment this line 
} 

appel comme ci-dessous

var a = "whatever"; 
var b = "however"; 
a.compareTo(b); 

Espérons que cela aide