JavaScriptで文字列を数値に変換するには次のような方法が考えられます。
a = "123456789";
b = parseInt(a, 10);
b = parseFloat(a);
b = Number(a);
b = a - 0;
b = +a;
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 |
文字列にプラスを付ける方法が最速でした。
ブラウザによっても速さに違いが出ます。


コメント