Задать вопрос
@maksmaksimovich

Чем заменить такую запись?

Как можно переписать это, чтобы было более правильно? Нужно, чтобы true или false возвращало, в myNumber передаётся строка вида '123' или '12323asd'.
!!+myNumber
  • Вопрос задан
  • 115 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
переписать это, чтобы было более правильно

!!+myNumber

А что надо-то? Пропускать строки, содержащие числа? А неправильно сейчас то, что "0" теряете (а ещё строковые представления двоичных/восьмеричных/шестнадцатеричных чисел - "0b101"/"0o777"/"0xFF", например, признаются корректными значениями)?

Можно регулярными выражениями воспользоваться:

/^\d+$/.test(str) - только цифры (т.е., целые неотрицательные числа)

/^-?\d+$/.test(str) - ниже нуля теперь окей

/^-?\d+(\.\d+)?$/.test(str) - и дроби тоже
Ответ написан
Комментировать
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Выглядит конечно фигово, но с условными конструкциями будет еще фиговее. Можно более явно
const res = Boolean(Number(myNumber));
Но мне кажется, вам больше подойдет isFinite
isFinite('123'); // true
isFinite('123sss'); // false

Данная функция сначала преобразует значение в число, и потом проверяет, является ли оно конечным числом.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
BRAGA96
@BRAGA96
Вот для примера функция jQuery для проверки на валидное число:
function isNumeric(value) {
	var type = typeof value;
	return (type === 'number' || type === 'string') && !isNaN(value - parseFloat(value));
}

isNumeric('2562362') //> true
isNumeric('263621.621561sg') //> false
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы