ホームページ ウェブフロントエンド jsチュートリアル JS_javascript スキルに実装された 4 つのデジタル千の位の書式設定メソッドの共有

JS_javascript スキルに実装された 4 つのデジタル千の位の書式設定メソッドの共有

May 16, 2016 pm 04:11 PM
js 番号 フォーマット

いわゆる千の位形式の数字、つまり 1 桁から始まり、3 桁ごとにカンマを追加します。たとえば「10,000」。この要件に応えて、私は最初に次のような関数を書きました:

コードをコピー コードは次のとおりです:

//方法 1
関数 toThousands(num) {
var result = [ ]、counter = 0;
num = (num || 0).toString().split('');
for (var i = num.length - 1; i >= 0; i--) {
カウンタ ;
result.unshift(num[i]);
If (!(counter % 3) && i != 0) { result.unshift(',') }
}
return result.join('');
}

方法 1 の実行プロセスは、数値を文字列に変換し、配列に分割し、配列内の要素を末尾から 1 つずつ新しい配列 (結果) の先頭に挿入します。要素が挿入されるたびに、counter は 1 回カウントします (+1)。counter が 3 の倍数の場合、カンマが挿入されますが、先頭にカンマは必要ありません (i が 0 の場合)。最後に、新しい配列の join メソッドを呼び出して結果を取得します。

方法 1 は比較的明確で理解しやすいため、プロジェクトでしばらく使用されてきました。しかし、私の直感では、そのパフォーマンスは良くないと思います。

メソッド 2 - メソッド 1 の文字列バージョン

コードをコピー コードは次のとおりです:

//方法 2
関数 toThousands(num) {
var result = ''、counter = 0;
num = (num || 0).toString();
for (var i = num.length - 1; i >= 0; i--) {
カウンタ ;
結果 = num.charAt(i) 結果;
If (!(counter % 3) && i != 0) { result = ',' result }
}
結果を返します;
}

方法 2 は、方法 1 の改良版です。文字列を配列に分割せず、常に文字列を操作します。

方法 3 - 最後の 3 つの数字を一致させるためにループします

コードをコピー コードは次のとおりです:

//方法 3
関数 toThousands(num) {
var num = (num || 0).toString()、re = /d{3}$/、結果 = '';
While ( re.test(num) ) {
結果 = RegExp.lastMatch 結果;
If (num !== RegExp.lastMatch) {
結果 = ',' 結果;
num = RegExp.leftContext;
} else {
num = '';
休憩;
}
}
If (num) { result = num result }
結果を返します;
}

方法 3 は、完全に異なるアルゴリズムです。正規表現をループして末尾の 3 つの数値と一致するたびに、カンマと一致した内容が結果文字列の先頭に挿入されます。 target (num) まだ一致していないコンテンツ (RegExp.leftContext) に値を割り当てます。また、次の点にも注意してください:

1. 桁数が 3 の倍数の場合、最後に一致する内容は 3 桁である必要がありますが、最初の 3 桁の前にカンマを追加する必要はありません。 2. 数値の桁数が 3 の倍数でない場合、ループの最後に num 変数に必ず 1 つまたは 2 つの数値が残ります。残りの数値はループの先頭に挿入されます。結果の文字列。

方法 3 はループ数 (1 ループで 3 文字を処理) を減らしますが、正規表現を使用するため、消費量がある程度増加します。

メソッド 4 - メソッド 3 の文字列バージョン


コードをコピー コードは次のとおりです:

//方法 4
関数 toThousands(num) {
var num = (num || 0).toString()、結果 = '';
while (num.length > 3) {
result = ',' num.slice(-3) result;
num = num.slice(0, num.length - 3);
}
If (num) { result = num result }
結果を返します;
}

実際、最後の 3 文字をインターセプトする機能は、string 型のスライス、substr、または substring メソッドを通じて実現できます。こうすることで、正規表現の使用を回避できます。

方法 5 - グループ化と結合方法

コードをコピー コードは次のとおりです:

//方法 5
関数 toThousands(num) {
var num = (num || 0).toString(), temp = num.length % 3;
スイッチ (温度) {
ケース 1:
num = '00' num;
休憩;
ケース 2:
num = '0' num;
休憩;
}
Return num.match(/d{3}/g).join(',').replace(/^0 /, '');
}

最初に桁数を 3 の倍数に補完し、正規表現を使用して 3 桁のグループに分割し、次に結合メソッドでカンマを追加し、最後に補完された 0 を削除します。

方法 6 - 怠け者の方法

コードをコピー コードは次のとおりです:

//方法 6
関数 toThousands(num) {
Return (num || 0).toString().replace(/(d)(?=(?:d{3}) $)/g, '$1,');
}

この書式設定は正規表現を置き換えることで実行できると常々思っていましたが、残念ながら、アサーションやその他の記述方法を使用する必要があります。 Google で検索したところ、このような正規表現を見つけました。これはおそらくコードの最も短い実装です。

テスト結果

数字 执行5000次消耗的时间(ms)
方法一 方法二 方法三 方法四 方法五 方法六
1 4 1 3 1 14 2
10 14 1 3 0 7 2
100 12 1 2 4 5 3
1000 13 2 3 2 9 5
10000 21 4 3 1 6 3
100000 21 3 2 1 5 6

方法 1 と方法 2 をよく比較すると、文字列操作の効率が配列操作の効率よりもはるかに高いことがわかります。方法 6 のテスト結果は、コードの長さはパフォーマンスとは関係がないことを示しています。方法 4 は全体的なパフォーマンスが最も優れています (ただし、num が 100 の場合にパフォーマンスが低下する理由はよくわかりません。主な理由は次のとおりです。

)。

1. 方法 1 と 2 を比較すると、ループの数を減らすために各操作で 1 文字ではなく 3 文字が使用されます。 2. 方法 3、5、6 と比較して、正規表現を使用しないため、消費量が削減されます。

最後に、最終的な最適化ソリューションとして方法 4 を選択しました。読者がより良い実装方法や改善の提案を持っている場合は、コメントを残すことができます。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

dosコマンドでCドライブをフォーマットする方法 dosコマンドでCドライブをフォーマットする方法 Feb 19, 2024 pm 04:23 PM

DOS コマンドは、Windows オペレーティング システムで使用されるコマンド ライン ツールで、さまざまなシステム管理タスクや操作を実行するために使用できます。一般的なタスクの 1 つは、C ドライブを含むハード ドライブをフォーマットすることです。 C ドライブのフォーマットは、C ドライブ上のすべてのデータを消去し、ファイル システムを再初期化するため、比較的危険な操作です。この操作を実行する前に、重要なファイルをバックアップしていることを確認し、フォーマットがコンピュータに与える影響を明確に理解してください。以下は DOS コマンドラインでフォーマットされます。

推奨: 優れた JS オープンソースの顔検出および認識プロジェクト 推奨: 優れた JS オープンソースの顔検出および認識プロジェクト Apr 03, 2024 am 11:55 AM

顔の検出および認識テクノロジーは、すでに比較的成熟しており、広く使用されているテクノロジーです。現在、最も広く使用されているインターネット アプリケーション言語は JS ですが、Web フロントエンドでの顔検出と認識の実装には、バックエンドの顔認識と比較して利点と欠点があります。利点としては、ネットワーク インタラクションの削減とリアルタイム認識により、ユーザーの待ち時間が大幅に短縮され、ユーザー エクスペリエンスが向上することが挙げられます。欠点としては、モデル サイズによって制限されるため、精度も制限されることが挙げられます。 js を使用して Web 上に顔検出を実装するにはどうすればよいですか? Web 上で顔認識を実装するには、JavaScript、HTML、CSS、WebRTC など、関連するプログラミング言語とテクノロジに精通している必要があります。同時に、関連するコンピューター ビジョンと人工知能テクノロジーを習得する必要もあります。 Web 側の設計により、次の点に注意してください。

携帯電話のフォーマット復元方法の秘密を公開(携帯電話の故障?心配しないでください) 携帯電話のフォーマット復元方法の秘密を公開(携帯電話の故障?心配しないでください) May 04, 2024 pm 06:01 PM

現在では、電源が入らない、システムクラッシュなどの遅延が発生することは避けられませんが、使用中に携帯電話は私たちの生活に欠かせないものとなっています。私たちはしばしば途方に暮れますが、時にはこれらの問題に対する解決策が見つからないこともあります。携帯電話の問題を解決するために、この記事では携帯電話のフォーマットを回復し、携帯電話を通常の動作に戻すいくつかの方法を紹介します。データをバックアップする - 携帯電話をフォーマットする前に、写真や連絡先などの重要な情報が失われないように、携帯電話上の重要なデータとファイルをバックアップすることを検討してください。データのセキュリティを確保するため、またはファイルをクラウド ストレージ サービスに転送することを選択するために、コンピューターに接続してファイルをバックアップできます。システム内蔵の回復機能を使用する - シンプル

ラップトップをフォーマットすると速度が速くなりますか? ラップトップをフォーマットすると速度が速くなりますか? Feb 12, 2024 pm 11:54 PM

ラップトップをフォーマットすると速度が速くなりますか? Windows ラップトップをフォーマットしたいが、それによって速度が向上するか知りたい場合は、この記事がこの質問に対する正しい答えを知るのに役立ちます。ラップトップをフォーマットすると速度が速くなりますか?ユーザーが Windows ラップトップをフォーマットする理由はたくさんあります。しかし、最も一般的な理由は、ラップトップのパフォーマンスまたは速度が遅いことです。ラップトップをフォーマットすると、Windows オペレーティング システムがインストールされている C ドライブまたはハード ドライブ パーティションに保存されているすべてのデータが完全に削除されます。したがって、すべてのユーザーは、特にラップトップのパフォーマンスに関しては、このステップを実行する前によく考えます。この記事は、ラップトップをフォーマットすると速度が向上するかどうかを理解するのに役立ちます。ラップトップをフォーマットすると便利です

HTMLの整形にはどのような方法があるのでしょうか? HTMLの整形にはどのような方法があるのでしょうか? Mar 08, 2024 am 09:53 AM

HTML 書式設定方法: 1. オンライン HTML 書式設定ツールを使用する; 2. コード エディターに付属する HTML 書式設定ショートカット キー (Visual Studio Code の Shift + Alt + F など) を使用する; 3. Sublime Text などのプラグインを使用するHTML/CSS/JS Prettify プラグイン; 4. HTML Tidy などのコマンド ライン ツールを使用します; 5. コーディング標準と習慣に従って手動で書式設定します。

jsとvueの関係 jsとvueの関係 Mar 11, 2024 pm 05:21 PM

js と vue の関係: 1. Web 開発の基礎としての JS、2. フロントエンド フレームワークとしての Vue.js の台頭、3. JS と Vue の補完関係、4. JS と Vue の実用化ビュー。

win10 システムをフォーマットして再インストールする方法_win10 システムのフォーマットと再インストールのチュートリアル win10 システムをフォーマットして再インストールする方法_win10 システムのフォーマットと再インストールのチュートリアル Mar 21, 2024 pm 04:56 PM

現在、Windows 10 システムのコンピュータのセキュリティは、多くのウイルスやプログラムによって脅かされています。典型的な例を見てみましょう。インターネットをサーフィンしているときに、意図せずリンクや Web サイトを開いてしまうと、非常に迷惑な広告が表示されます。または、コンピュータがインターフェースに引っかかって動かない場合は、何らかのソフトウェアが悪意を持ってバンドルされてインストールされている可能性があります。また、コンピュータにウイルスが侵入している可能性もあります。このような問題が発生した場合は、win10 コンピュータにシステムを再インストールすると、システム ディスク内のウイルス プログラムを効果的に削除できます。次に、エディタに win10 システムをフォーマットして再インストールする方法が表示されます。読み進めてください。 1. win10 システムをフォーマットして再インストールするにはどうすればよいですか? まず、「開始」をクリックします。

js コードをフォーマットした後に実行できない場合はどうすればよいですか? js コードをフォーマットした後に実行できない場合はどうすればよいですか? Mar 08, 2024 am 09:41 AM

解決策: 1. JS 構文チェック ツールを使用して、コードに構文エラーがあるかどうかを確認します。2. コードに不足している依存関係がないか確認し、正しくインポートします。3. コード内に重複する変数名があるかどうかを確認し、変更します。変数名; 4. ブラウザ固有の API がコード内で使用されているかどうかを確認しますが、他のブラウザではサポートされていないため、実行に失敗します。

See all articles