JavaScriptで文字列を数値に変換する方法と処理速度

JavaScriptで文字列を数値に変換するには次のような方法が考えられます。

a = "123456789";
b = parseInt(a, 10);
b = parseFloat(a);
b = Number(a);
b = a - 0;
b = +a;

parseIntは整数に変換します。
parseFloatは浮動小数に変換します。
Numberは数値に変換します。new演算子を付けないと型変換になります。
4番目は文字列から0(ゼロ)を引きます。
5番目は文字列に「+」を付けます。

どれも同じ結果になりますが、スピードが違います。
Chrome(バージョン28)で確認しました。

方法 時間
parseInt(a, 10) 95
parseFloat(a) 100
Number(a) 43
a – 0 56
+a 56

Numberが最も速い結果になりました。
parseIntとparseFloatが正攻法に思っていましたが、処理は遅いです。
文字列から数値を引く、文字列にプラス記号を付ける、というのは邪道に思えるのですが、速いです。

念のためIE(バージョン10)でも試してみました。

方法 時間
parseInt(a, 10) 100
parseFloat(a) 83
Number(a) 87
a – 0 76
+a 72

文字列にプラスを付ける方法が最速でした。
ブラウザによっても速さに違いが出ます。

コメント

タイトルとURLをコピーしました