Подтвердить что ты не робот

Coffeescript: как преобразовать строку в число?

Я создаю объект JSON, который отправляется в запросе POST. Этот объект имеет свойства, которые перед отправкой необходимо преобразовать из строкового типа в целочисленный. Как сделать это с помощью coffeescript?

4b9b3361

Ответ 1

Используйте функцию javascript parseInt.

number = parseInt( stringToParse, 10 );

Ссылка здесь.

Помните, что coffeescript - это просто javascript после компиляции

Ответ 2

Вы можете использовать менее очевидный, более волшебный, менее клавиатурный оператор +:

+"158"

Ответ 3

Функция parseInt Javascript выполнит это. Не забудьте установить параметр radix, чтобы предотвратить путаницу и обеспечить предсказуемое поведение. (Например, в Coffeescript)

myNewInt = parseInt("176.67", 10)

В ресурсах MDN есть несколько хороших примеров: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt

Ответ 4

В официальном руководстве он еще не задокументирован, но похоже, что операторы-подборщики тоже работают:

myString = "12323"
myNumber = (Number) myString

Ответ 5

Я не рекомендую использовать parseInt, поскольку это неправильно в одном случае - я нашел:

parseInt('09asdf', 10); 
#> return 09 which is not correct at all. It should return NaN

Правильный ответ должен быть из @Corkscreewe. И есть еще один:

cleanInt = (x) ->
  x = Number(x)
  (if x >= 0 then Math.floor(x) else Math.ceil(x))

Учитесь у https://coderwall.com/p/cbabhg

Ответ 6

На основе ссылки, упомянутой в nXqd answer, вы также можете неявно преобразовать строку, умножив ее на 1:

'123' * 1 // 123

Он корректно ведет себя для неправильного ввода:

'123abc' * 1 // NaN

Вы можете сделать это также с помощью float:

'123.456' * 1 // 123.456

Ответ 7

Я всегда использую побитовое ИЛИ для преобразования строк в целые числа.

"99.999" | 0 // returns 99

Ответ 8

Это простой способ для ваших нужд. NaN будет возвращаться, как ожидалось.

parseInt( "09asdf".match(/^\d+$/)?[0] ? NaN,  10)

Ответ 9

stringToConvernt = "$13,452,334.5"
output = Number(stringToConvernt.replace(/[^0-9\.]/g, ''))
console.log(output)
//The output is `13452334.5`.