Je construis un objet JSON envoyé dans une demande POST . Cet objet a des propriétés qui doivent être converties de type chaîne en type entier avant d'être envoyées. Comment fait-on cela avec coffeescript?
Utilisez la fonction javascript parseInt
.
number = parseInt( stringToParse, 10 );
La référence est ici .
Rappelez-vous que coffeescript est juste du javascript après la compilation
Vous pouvez utiliser l'opérateur + moins évident, plus magique, moins gourmand en clavier:
+"158"
La fonction parseInt de Javascript y parviendra. N'oubliez pas de définir le paramètre radix pour éviter toute confusion et assurer un comportement prévisible. (Par exemple, dans Coffeescript)
myNewInt = parseInt("176.67", 10)
Il existe quelques bons exemples dans les ressources MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/parseInt
Je ne recommande pas d'utiliser parseInt
car c'est faux dans un cas - que j'ai trouvé:
parseInt('09asdf', 10);
#> return 09 which is not correct at all. It should return NaN
La bonne réponse devrait être celle de @Corkscreewe. Et il y en a un autre:
cleanInt = (x) ->
x = Number(x)
(if x >= 0 then Math.floor(x) else Math.ceil(x))
Apprenez de https://coderwall.com/p/cbabhg
Sur la base du lien, mentionné dans nXqd's answer , vous pouvez également convertir implicitement une chaîne en la multipliant par 1:
'123' * 1 // 123
Il se comporte correctement pour une saisie incorrecte:
'123abc' * 1 // NaN
Vous pouvez le faire aussi avec des flotteurs:
'123.456' * 1 // 123.456
Cela n'a pas encore été documenté dans le manuel officiel, mais il semble que les opérateurs de casting fonctionnent aussi
myString = "12323"
myNumber = (Number) myString
J'utilise toujours OR au niveau du bit pour convertir les chaînes en entiers .
"99.999" | 0 // returns 99
Ceci est un moyen simple pour votre besoin. NaN sera retourné comme prévu.
parseInt( "09asdf".match(/^\d+$/)?[0] ? NaN, 10)
stringToConvernt = "$13,452,334.5"
output = Number(stringToConvernt.replace(/[^0-9\.]/g, ''))
console.log(output)
//The output is `13452334.5`.