Значение в двойных или одинарных кавычках обрабатывается JavaScript как тип String.Поэтому на самом деле indexOf ищет подстроку («5») внутри строки («55»).
Я не уверен, почему вы пытаетесь использовать indexOf для сравнения чисел, можетевы просто используете:
var t = "55";
t == 5 //false
t == "55" // true
t == "5" // false
Обратите внимание, что я использовал ==, а не ===.Использование == преобразует значения в одинаковые типы (в случае t = "55" в строку) и сравнивает их.
РЕДАКТИРОВАТЬ
Поскольку операционная система пояснила, что tзначение содержит как цифры, так и буквы, затем для сравнения необходима дополнительная логика.
- Извлечение числа из строки.
- Сравните его с предоставленным числом.
Вы можете достичь этого, используя функцию:
function compare(number, stringWithNumber) {
// slice string with number to get a string starting with a number
const stringStartingWithNumber = stringWithNumber.slice(stringWithNumber.search(/\d/));
return parseFloat(stringStartingWithNumber) == number; // parseFloat removes the rest of the string and parses found number as float
}
Затем:
compare("5", "55") // false
compare("5", "5") // true
compare("5", "sometext 55") // false
compare("5", "sometext 5") // true
Обратите внимание, что функция будет сравнивать предоставленный номер только с первым номеромнаходит в аргументе stringWithNumber.