Я создаю объект JSON, который отправляется в запросе POST. Этот объект имеет свойства, которые перед отправкой необходимо преобразовать из строкового типа в целочисленный. Как сделать это с помощью coffeescript?
Coffeescript: как преобразовать строку в число?
Ответ 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`.