2015-11-03 2 views
0

У меня есть код, который сравнивает две строки и возвращает тот, который имеет самое низкое значение, а затем сравнивает это значение с letterGrade, чтобы узнать, какая из них самая низкая, а затем возвращает более высокую из двух. Моя проблема в том, что у меня возникают проблемы с запуском этого кода с помощью javascript. Javascript код:Перевод java в javascript с помощью 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

Если вы хотите исправить свой Javascript; разместите Javascript, а не Java. –

+0

Что вы пробовали в javascript? Также обратите внимание, что javascript и java не являются тесно связанными языками, копирование и вставка не будут работать. –

+0

Я отредактировал мой вопрос с кодом javascript. Я попробовал localeCompare, который не работал. CompareTo - единственный способ, которым я знаю, решить эту проблему и не могу заставить его работать в javascript. – littlemisschik

ответ

0

JavaScript int не имеет трехкомпонентную compareTo как Java. Вы можете написать один. Нечто подобное,

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

Затем измените compareTo вызовы, чтобы вызвать его. Что-то вроде

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

и

var result3 = compare(letterGrade, result2); 
0

моего вопроса в том, что наш бэкенде код упорядочено содержимое с помощью СотрагеТо Явы, из-за непонимания, я попытался переписать СотрагеТо в JavaScript, в то время как исправление в конечном итоге что-то полностью разные, однако это может решить ваш вопрос

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 
} 

Называйте это, как показано ниже

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

Надеюсь, что это поможет