ホームページ ウェブフロントエンド jsチュートリアル JavaScript 文字列乗算_JavaScript スキル

JavaScript 文字列乗算_JavaScript スキル

May 16, 2016 pm 06:47 PM
乗算

元のアドレス: http://www.davidflanagan.com/2009/08/string-multipli.html
原著者: David Flanagan
Ruby で、「*」演算子は、左側のパラメータとして文字列を使用し、右側のパラメータとして数値を使用して、文字列の繰り返しを実装します。たとえば、「Ruby」 * 2 の値は「RubyRuby」です。これは限られた場所でしか役に立ちません (たとえば、ハイフンなどの ASCII 文字のテーブルの生成など) が、非常に簡潔です。また、文字列を n 回連結するループを作成するよりも優れています (非常に非効率的と思われます)。

JavaScript で文字列の乗算を行うための賢いトリックを発見しました:


String.prototype.times = function(n) {
return Array.prototype.join.call({length:n 1}, this); ;
"js".times(5) // => "jsjsjsjsjs"


このメソッドは、要素がすべて「未定義」である配列を呼び出します。行動。ただし、実際には、n 1 個の「未定義」要素を含む配列は作成されません。これは、Array オブジェクトのプロトタイプ関数 join() に依存して、長さプロパティを含む匿名オブジェクトを使用します。 「Object」は配列ではないため、join() を直接呼び出すことができないため、プロトタイプの call() を通じて実装する必要があります。同じ効果を持つ単純なバージョンを以下に示します。


コードをコピーします コードは次のとおりです:
String.prototype.times = function(n) { return (new Array(n 1)).join(this);};

配列のコンストラクターを 1 つで呼び出すときパラメータは配列の長さを設定するだけで、実際に配列の要素を作成するわけではありません。

私は Firefox でのみテストしており、通常のループよりも効率的であると推定していますが、ベンチマークは行っていません。

著者について
David Flanagan は、Java の執筆に熱中しているコンピューター プログラマーです。Java 関連の本の執筆にほとんどの時間を費やしています。 David は、MIT でコンピューター サイエンスとエンジニアリングの学位を取得しました。彼は米国の太平洋岸北西部、シアトルとバンクーバーの間に住んでいます。オライリーのベストセラー書籍には、『Java in a Nutshell』、『Java Foundation Classes in a Nutshell』、『Java Enterprise in a Nutshell』、『JavaScript: The Definitive Guide』、『JavaScript Pocket Reference』、および『The Ruby Programming Language』などがあります。

私のコメント
効率を重視する場合は、ループの反復をわずかに最適化するとより効率的になる可能性があります。たとえば、次の再帰呼び出しのアルゴリズムの複雑さは O(log2n) です。 Google Chrome でのテスト結果は、David の方法よりも実行速度が速いということですが、彼の方法が非常にエレガントであることは認めざるを得ません。

コードをコピー コードは次のとおりです。
String.prototype.times = function(n ) {
if ( n == 1 ) {
これを返します;
}
varmidRes = this.times(Math.floor(n/2));
if ( n % 2 ) {
midRes = this;
return
}


追記
David は私の提案を採用しました。彼は私たちのために非再帰バージョンを書いてくれました。彼のブログの原文をご覧ください: http://www.davidflanagan.com/2009/08/good-algorithms.html
連絡先情報
私のメールアドレス、お気軽にお問い合わせください (redraiment@gmail.com) )
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

PHPでint型をstringに変換する方法を詳しく解説 PHPでint型をstringに変換する方法を詳しく解説 Mar 26, 2024 am 11:45 AM

PHPでint型をstring型に変換する方法を詳しく解説 PHPの開発では、int型をstring型に変換する必要に遭遇することがよくあります。この変換はさまざまな方法で実現できますが、この記事では、読者の理解を深めるために、具体的なコード例とともに、いくつかの一般的な方法を詳しく紹介します。 1. PHP の組み込み関数 strval() を使用する PHP には、さまざまな型の変数を文字列型に変換できる組み込み関数 strval() が用意されています。 int型をstring型に変換する必要がある場合、

Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Mar 12, 2024 pm 09:42 PM

Golang で文字列が特定の文字で始まるかどうかを確認するにはどうすればよいですか? Golang でプログラミングする場合、文字列が特定の文字で始まるかどうかを確認する必要がある状況によく遭遇します。この要件を満たすために、Golang の strings パッケージによって提供される関数を使用してこれを実現できます。次に、Golangを使って文字列が特定の文字で始まるかどうかを確認する方法を、具体的なコード例とともに詳しく紹介します。 Golang では、strings パッケージの HasPrefix を使用できます。

Golang 文字列が指定された文字で終わるかどうかを判断する方法 Golang 文字列が指定された文字で終わるかどうかを判断する方法 Mar 12, 2024 pm 04:48 PM

タイトル: Golang で文字列が特定の文字で終わるかどうかを判断する方法 Go 言語では、文字列が特定の文字で終わるかどうかを判断する必要があることがあります。これは文字列を処理するときに非常に一般的です。この記事では、Go 言語を使用してこの関数を実装する方法と、参考用のコード例を紹介します。まず、Golang で文字列が指定された文字で終わるかどうかを判断する方法を見てみましょう。 Golang の文字列内の文字はインデックス作成によって取得でき、文字列の長さは次のようになります。

python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法 python_python の繰り返し文字列チュートリアルで文字列を繰り返す方法 Apr 02, 2024 pm 03:58 PM

1. まず pycharm を開いて、pycharm ホームページに入ります。 2. 次に、新しい Python スクリプトを作成し、右クリックして [新規] をクリックし、[Pythonfile] をクリックします。 3. 文字列、コード: s="-" を入力します。 4. 次に、文字列内のシンボルを 20 回繰り返す必要があります (コード: s1=s*20)。 5. 印刷出力コード、コード: print(s1) を入力します。 6. 最後にスクリプトを実行すると、下部に戻り値が表示されます。 - 20 回繰り返しました。

PHPで16進数を文字列に変換するときに中国語が文字化けする問題を解決する方法 PHPで16進数を文字列に変換するときに中国語が文字化けする問題を解決する方法 Mar 04, 2024 am 09:36 AM

PHP で 16 進数の文字列を変換するときに中国語の文字化けを解決する方法. PHP プログラミングでは、16 進数で表された文字列を通常の中国語の文字に変換する必要がある状況に遭遇することがあります。しかし、この変換の過程で、場合によっては中国語の文字化けが発生することがあります。この記事では、PHPで16進数を文字列に変換する際に中国語が文字化けする問題を解決する方法と、具体的なコード例を紹介します。 16 進数の変換には hex2bin() 関数を使用します。PHP の組み込み hex2bin() 関数は 1 を変換できます

PHP 文字列マッチングのヒント: あいまいな組み込み式を避ける PHP 文字列マッチングのヒント: あいまいな組み込み式を避ける Feb 29, 2024 am 08:06 AM

PHP 文字列マッチングのヒント: あいまいな組み込み式を避ける PHP 開発では、文字列マッチングは一般的なタスクであり、通常は特定のテキスト コンテンツを検索したり、入力形式を検証したりするために使用されます。ただし、一致の精度を確保するために、曖昧な包含式の使用を避ける必要がある場合があります。この記事では、PHP で文字列マッチングを行うときにあいまいな包含式を回避するためのテクニックをいくつか紹介し、具体的なコード例を示します。完全一致には preg_match() 関数を使用します。 PHP では、preg_mat を使用できます。

PHP 文字列操作: スペースを効果的に削除する実用的な方法 PHP 文字列操作: スペースを効果的に削除する実用的な方法 Mar 24, 2024 am 11:45 AM

PHP 文字列操作: スペースを効果的に削除する実用的な方法 PHP 開発では、文字列からスペースを削除する必要がある状況によく遭遇します。スペースを削除すると文字列がきれいになり、その後のデータ処理と表示が容易になります。この記事では、スペースを削除するための効果的かつ実践的な方法をいくつか紹介し、具体的なコード例を添付します。方法1: PHP組み込み関数trim()を使用する PHP組み込み関数trim()を使用すると、文字列の両端のスペース(スペース、タブ、改行などを含む)を削除でき、非常に便利で簡単です。使用します。

Oracle Database Advanced Application: 乗算演算例の分析 Oracle Database Advanced Application: 乗算演算例の分析 Mar 02, 2024 pm 09:54 PM

業界をリードするリレーショナル データベース管理システムである Oracle データベースは、強力な機能と柔軟なアプリケーションを備えており、さまざまな複雑なデータ処理要件をサポートできます。データベース アプリケーションでは、加算、減算、乗算、除算などのさまざまな数値演算が必要になることがよくあります。この記事では、Oracle データベースでの乗算演算の例の分析に焦点を当て、特定のコード例を通じて Oracle で乗算演算を実行する方法を示し、その高度なアプリケーションを示します。読者は、この記事の学習と実践を通じて Oracle データベースをさらに習得できます。

See all articles