[解決済み] JavaScriptで桁数を取得する
質問
タイトルにあるように、何桁の
var number
があります。例えば もし
number = 15;
私の関数が返すべきは
2
. 現状では、このようになっています。
function getlength(number) {
return number.toString().length();
}
しかし、Safariはそれが
TypeError
:
'2' is not a function (evaluating 'number.toString().length()')
ご覧の通りです。
'2'
は、実は正しい解なのです。しかし、なぜ
not a function
?
解決方法は?
length
はプロパティであり、メソッドではありません。呼び出すことはできないので、括弧は必要ありません。
()
:
function getlength(number) {
return number.toString().length;
}
UPDATEです。
コメントで述べたように、上記の例は浮動小数点数の場合はうまくいきません。これを動作させるためには
String(number).replace('.', '').length
または、正規表現で桁を数える。
String(number).match(/\d/g).length
.
スピードという点では、与えられた数字の桁数を求めるのに最も速い方法は、数学的に行うことである。例えば
正の整数
を使った素晴らしいアルゴリズムがあります。
log10
:
var length = Math.log(number) * Math.LOG10E + 1 | 0; // for positive integers
すべての種類の整数(負を含む)に対して、次のような素晴らしい最適化されたソリューションがあります。
をご覧ください。
の使用には注意が必要です。
Math.log10
多くのレガシーブラウザでサポートされていないためです。そのため
Math.log10(x)
を
Math.log(x) * Math.LOG10E
を使えば、互換性の問題は解決します。
10進数の高速な数学的解法を作成するのは 浮動小数点演算のよく知られた動作 そのため、キャストからストリングへのアプローチの方がより簡単でフールプルーフです。このように ストリートロジック 高速キャストは、単純な数値と文字列の連結で行うことができ、その結果 置き換える という解決策に変換される。
var length = (number + '').replace('.', '').length; // for floats
関連
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み] 配列の結合時に未定義のプロパティ 'push' を読み込むことができない
-
[解決済み】GETできない / Nodejsエラー
-
[解決済み】TypeError: Router.use() はミドルウェアの関数を要求しているが、Object を取得した。
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
[解決済み】JavaScriptエラー(Uncaught SyntaxError: Unexpected end of input)
-
[解決済み】 Uncaught TypeError : undefined のプロパティ 'replace' を読み取れない In Grid
-
nullのプロパティinnerHTMLを読み取れません エラーメッセージ
-
jq は html ページとデータを動的に分割する。