我正在构建一个在POST请求中发送的JSON对象。 此对象具有在发送之前需要从字符串类型转换为整数类型的属性。如何用coffeescript做到这一点?
答案 0 :(得分:60)
使用javascript parseInt
功能。
number = parseInt( stringToParse, 10 );
参考是here。
请记住,coffeescript在编译后只是javascript
答案 1 :(得分:37)
你可以使用不太明显,更神奇,键盘密集度较低的操作符+:
+"158"
答案 2 :(得分:7)
Javascript的parseInt函数将实现此目的。请记住设置radix参数以防止混淆并确保可预测的行为。 (例如在Coffeescript中)
myNewInt = parseInt("176.67", 10)
MDN资源中有一些很好的例子:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt
答案 3 :(得分:2)
尚未在官方手册中记录,但似乎演员也是如此:
myString = "12323"
myNumber = (Number) myString
答案 4 :(得分: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))
学习
答案 5 :(得分:2)
根据nXqd's answer中提到的链接,您还可以通过将字符串乘以1来隐式转换字符串:
'123' * 1 // 123
对于错误输入,它的行为正确:
'123abc' * 1 // NaN
您也可以使用浮点数执行此操作:
'123.456' * 1 // 123.456
答案 6 :(得分:1)
我总是使用按位OR将字符串转换为整数。
"99.999" | 0 // returns 99
答案 7 :(得分:0)
这是满足您需求的简单方法。 NaN将按预期退回。
parseInt( "09asdf".match(/^\d+$/)?[0] ? NaN, 10)
答案 8 :(得分:0)
stringToConvernt = "$13,452,334.5"
output = Number(stringToConvernt.replace(/[^0-9\.]/g, ''))
console.log(output)
//The output is `13452334.5`.