Xeebi

home categories feeds

Javascript で文字列から数値への冴えた変換

問題

var i_want_number = document.getElementById("num0");

i_want_number は残念ながら文字列だ.これを回避するには parseIntparseFloat があるが,ちょっとだるい感じがある気もする.

解決

var i_want_number = +document.getElementById("num0");

これはつまり何かを bool にしたい時に

!!foo

とやるのと同じような話だ.気持ち悪いといえば気持ち悪いけど,いい感じに使えるのではないだろうか.

これは d3.js の tutorial 読んでる時に見つけたものです.

追記

Number というのがあるので多分こっちを使うべきなんだとおもう.

Number("3.3") // => 3.3
Number("3") // => 3
Number("3ab") // => NaN

追記 II

ちなみに new Number(4)4 は違い,前者は数値オブジェクトを生成するのに対してリテラルの方は primitive 値を作るということになるため,前者は 一般に非推奨とのこと. new を付与せずに実行した場合は primitive を返すらしい.読み返すとふつうに parseFloat 使えという気がする.