2015-12-21 2 views
-3

У меня есть две переменные, как содержащие текст и цифры, и я получаю неверный результат при сравнении их:Сравнивая текст, содержащий числа

var x = "test_8" 
var y = "test_11" 
if(x > y){ 
    alert(x+" is greater than "+y); 
} 
else{ 
    alert(y+" is greater than or equal to "+x); 
} 

Я получаю предупреждение об test_8 больше test_11, но я должен быть получить другое предупреждение. Я предполагаю, что мне пришлось бы вывести 8 и 11 из числа, но я не уверен, как это сделать.

+5

'8> 1', это то, что происходит – Tushar

+1

он будет работать, если у вас«test_08»и«test_11» – madox2

+0

не уверены в том, чтобы закрыть как дубликат или нет, но вы 'найдем ваше решение в [Sort Array Elements (строка с числами), натуральный сорт] (http://stackoverflow.com/q/15478954/1048572), в котором подробно описывается функция сравнения – Bergi

ответ

1

Его необходимо преобразовать в число для точного сравнения.

function getNum(str) { 
 
     // it removes all non numeric, but regex can be differ according the str data which uses. 
 
     return Number(str.replace(/\D+/,"")); 
 
    } 
 

 
    var x = "test_8"; 
 
    var y = "test_11"; 
 

 
    if(getNum(x) > getNum(y)){ 
 
     alert(x+" greater than "+y); 
 
    } 
 
    else{ 
 
     alert(y+" greater than "+x); 
 
    }

+0

спасибо, это было так, как я его исправил. Я проверяю, имеет ли переменная число в нем и преобразует его в число, если оно – NiallMitch14

Смежные вопросы