45

我正在构建一个在 POST 请求中发送的 JSON 对象。该对象具有在发送前需要从字符串类型转换为整数类型的属性。如何使用咖啡脚本做到这一点?

4

9 回答 9

66

使用javascriptparseInt函数。

number = parseInt( stringToParse, 10 );

参考在这里

请记住,coffeescript 只是编译后的 javascript

于 2012-05-23T13:27:25.637 回答
38

您可以使用不那么明显、更神奇、键盘密集度较低的运算符 +:

+"158"
于 2012-05-23T13:32:43.670 回答
7

Javascript 的 parseInt 函数将实现这一点。请记住设置 radix 参数以防止混淆并确保可预测的行为。(例如在 Coffeescript 中)

myNewInt = parseInt("176.67", 10)

MDN 资源中有一些很好的例子:https ://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt

于 2012-05-23T13:32:01.727 回答
2

它尚未在官方手册中记录,但似乎演员操作员也可以工作:

myString = "12323"
myNumber = (Number) myString
于 2012-12-11T09:31:10.777 回答
2

我不建议使用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学习

于 2013-08-26T08:44:02.857 回答
2

根据nXqd 的答案中提到的链接,您还可以通过将字符串乘以 1 来隐式转换字符串:

'123' * 1 // 123

对于不正确的输入,它的行为正确:

'123abc' * 1 // NaN

您也可以使用浮点数执行此操作:

'123.456' * 1 // 123.456
于 2015-02-18T09:41:10.260 回答
0

这是满足您需要的简单方法。NaN 将按预期返回。

parseInt( "09asdf".match(/^\d+$/)?[0] ? NaN,  10)
于 2014-12-18T01:22:44.480 回答
0

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

于 2015-09-09T11:45:43.293 回答
0

我总是使用按位或将字符串转换为整数

"99.999" | 0 // returns 99
于 2017-03-16T12:27:18.263 回答