В Javascript какой метод разрешает использовать целые и плавающие, но не символы - PullRequest
1 голос
/ 05 апреля 2020

В моей переменной javascript я получаю значение как "abc" или "123" или "123.456" на основе ввода, указанного в поле input. Для всех значений типом является string, даже если введенное значение является числом или с плавающей запятой.

typeof(variable) дает string всегда.

Следующий метод будет запускаться для каждого keydown. Я также использую lodash библиотеку

convertMethod(val) {
    console.log(round(val,2).toString())    //round is a lodash method which is imported already
}

Когда я round значение десятичной точки не приходит. Я просто хочу округлить значение до двух десятичных знаков, если введенное значение является цифрами, а не алфавитами. Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Вы можете проверить номер или нет, используя isNaN. Округлите его, если это число:

convertMethod(val) {
    if(!isNaN(val))
       console.log(round(val,2).toString())
    else
       console.log(val)
}

convertMethod("qw")
convertMethod("12.3456")
convertMethod("12.432")
convertMethod("12")

Вывод:

"qw"
"12.35"
"12.43"
"12"
0 голосов
/ 05 апреля 2020

Попробуйте преобразовать строку в число (через _.toNumber() или оператор +. Затем проверьте, является ли это число, используя _.isFinite(), который возвращает false для не чисел, Infinite, -Infinite и NaN .

const { isFinite, round } = _

const convertMethod = val => {
  if (isFinite(+val))
    console.log(round(val, 2).toString())
  else
    console.log(val)
}

convertMethod('5.4435')

convertMethod('abc')
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
...