JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptでString.prototype.toUpperCase()を使わずに文字列を大文字へ変換する方法

    はじめにJavaScriptには、文字列を大文字に変換するための組み込みメソッド String.prototype.toUpperCase() が用意されています。しかし、学習やアルゴリズムの練習として、このメソッドを使用せずに同等の機能を自前で実装することを求められることがあります。本記事では、文字列クラスのプロトタイプオブジェクトに新しい関数を定義し、文字列内のすべての英字を大文字に変換して返すカスタムメソッドを実装する方法を解説します。実装のアプローチ基本的な考え方はシンプルです。小文字のアルファベットと大文字のアルファベットの対応表(マッピング)を用意し、文字列を1文字ずつ走査しながら

  2. JavaScriptで増加数列のn番目の要素を効率的に求める方法

    問題の定義本記事では、以下のように定義される「増加数列」の n 番目の要素を求めるアルゴリズムを考えていきます。seq(0) = 1 が数列の最初の要素です。数列に含まれる各 x に対して、y = 2 * x + 1 および z = 3 * x + 1 の値も必ず数列に含まれます。上記以外の数値は数列に含まれません。このルールに従うと、数列の最初のいくつかの項は次のようになります。[1, 3, 4, 7, 9, 10, 13, 15, 19, 21, 22, 27, ...]解法のアプローチこの問題は、有名な「ハミング数(正則数)」の生成と同じ発想で解くことができます。ポイントは、2つのポイン

  3. JavaScriptで文字列内の英字だけを抽出して逆順に並べ替える方法

    問題文字列 str を引数として受け取るJavaScript関数を考えます。この関数の役割は、文字列を反転させることですが、その際にアルファベット以外の文字(数字や記号など)はすべて除外しなければなりません。たとえば、入力が「exa13mple」の場合、数字の「13」を取り除き、残った英字だけを逆順にした「elpmaxe」が期待される出力となります。解決アプローチこの問題は、以下の手順で解決できます。1. split():文字列を1文字ずつに分解して配列にします。2. reverse():配列の要素順を反転させます。3. filter():正規表現 /[a-zA-Z]/ を使って、英字のみの要

  4. JavaScriptで整数から降順の自然数配列を生成して返す方法

    問題JavaScriptで、数値を引数として受け取り、n から 1 までのすべての自然数を含む配列を返す関数を作成する必要があります。入力const num = 6;出力const output = [ 6, 5, 4, 3, 2, 1 ];実装のポイントこの問題を解くには、以下の手順で処理を行います。Math.round() で数値を四捨五入し、整数に丸めます。Math.abs() で絶対値に変換し、負の数が渡されても正しく動作するようにします。for ループを使い、n から 1 まで逆順に値を配列へ追加していきます。コード例以下が実際のコードです。const num = 6; const

  5. JavaScriptで秒数を時間と分に変換する方法

    問題本記事では、秒数を受け取り、その秒数に含まれる「時間」と「分」を返すJavaScript関数の作成方法を解説します。動画の再生時間やタイマー処理など、秒単位のデータを人間が読みやすい形式に変換したい場面で役立つテクニックです。入力例:const seconds = 3601;期待される出力:const output = "1 hour(s) and 0 minute(s)";変換の考え方秒数を時間と分に変換するには、以下の基本的な単位関係を利用します。1時間 = 3600秒1分 = 60秒手順はシンプルです。まず、元の秒数を3600で割った整数部分が「時間」になります。

  6. JavaScriptで数値の約数の個数を求める方法

    問題JavaScriptで、引数として受け取った数値の約数(divisor)の個数を返す関数を作成する必要があります。入力const num = 30;出力const output = 8;30の約数は以下の8個だからです。1, 2, 3, 5, 6, 10, 15, 30アプローチ:素因数分解を使うこのコードでは、1から順に割り切れる数を探して数えるのではなく、素因数分解の性質を利用しています。任意の正の整数 n を素因数分解して n = p^a × q^b × r^c ... と表せるとき、約数の総数は次の式で求められます。(a + 1) × (b + 1) × (c + 1) × ...

  7. JavaScriptで7の倍数判定の過程で得られる数値を求める方法

    問題 ある整数が 10a + b の形で表せるとき、「a − 2b が 7 で割り切れるならば、元の数も必ず 7 で割り切れる」という性質が成り立ちます。この性質を利用すると、大きな数でも 7 の倍数かどうかを効率的に判定できます。 この変換を、7 で割り切れるかどうかが一目で分かる2 桁以下の数になるまで繰り返していきます。 そこで本記事では、数値を引数として受け取り、その数を 2 桁以下の数に減らすまでに必要な変換の回数と、最終的に得られた数値を配列として返す JavaScript 関数を作成します。 入力 const num = 1603; 出力 const output = [7,

  8. JavaScriptで配列の要素をデータ型ごとにグループ化する方法

    はじめにJavaScriptでは、数値・文字列・真偽値など異なるデータ型が混在する配列を扱う場面があります。本記事では、そのような配列を受け取り、「データ型名をキー」「その型に属する要素の配列を値」とするオブジェクトを返す関数の実装方法を解説します。問題の概要混合データ型の配列を引数として受け取り、各要素をtypeof演算子で判定して、同じデータ型同士をまとめたオブジェクトを返す関数を作成します。実装コード { const res = {}; for(let i = 0; i < arr.length; i++){ const el = arr[i];

  9. JavaScriptで文字列から指定した長さより長い単語を抽出して配列として返す方法

    問題 単語の並んだ文(文字列)と数値を受け取り、その数値で指定された長さよりも文字数が多い単語をすべて抽出し、配列として返すJavaScript関数を作成する必要があります。 入力 const str = this is an example of a basic sentence; const num = 4; 出力 const output = [ example, basic, sentence ]; これは、元の文の中で文字数が4より大きい単語が「example」「basic」「sentence」の3つしか存在しないためです。 実装例 以下がそのコードです。 const str =

  10. JavaScriptでスペース区切りの数値文字列から最大値と最小値を抽出する方法

    問題 今回実装するのは、スペースで区切られた複数の数値を含む文字列を引数として受け取るJavaScript関数です。関数は、文字列の中から最大の数値と最小の数値だけを抜き出し、それらをスペースで区切った1つの文字列として返す必要があります。 入力例: const str = 5 57 23 23 7 2 78 6; 出力例: const output = 78 2; これは、配列内の最大値が 78、最小値が 2 であるためです。 解決策:reduce() を使った実装 以下のコードでは、split() で文字列を配列に変換し、reduce() メソッドを使って1回の走査で最大値と最小値を同時

  11. JavaScriptで文字列から重複を除いて一意な文字だけを抽出する方法

    問題JavaScriptで、文字列 str を引数として受け取る関数を作成します。この関数は、入力文字列の中で一度だけ出現する文字(一意な文字)だけで構成される新しい文字列を組み立てて返す必要があります。言い換えると、重複して現れるすべての文字を取り除く処理です。 コード例以下がその実装例です。 { let res = ; for(let i = 0; i < str.length; i++){ const el = str[i]; if(str.indexOf(el) === str.lastIndexOf(el)){

  12. JavaScriptでmのn乗根(m^(1/n))を計算する方法

    問題2つの数値 m と n を引数として受け取り、次の式の値を計算して返す JavaScript 関数を作成する必要があります。(m)1/nつまり、これは「m の n 乗根」を求める問題です。例えば、m = 16、n = 4 の場合、16 の 4 乗根である「2」が正解となります。解決方法この計算には Math.pow() メソッドを使うのが最も簡単です。Math.pow(base, exponent) は「base の exponent 乗」を返すメソッドなので、第2引数に 1/n を指定することで、m の n 乗根を求められます。コード例以下が実際のコードです。const m = 16;

  13. JavaScriptで偶数インデックスの要素の合計に最後の要素を掛けて求める方法

    問題 整数の配列を受け取り、偶数番目のインデックスにある要素の合計に、最後のインデックスの要素を掛けた値を返すJavaScript関数を作成します。 例として、次の配列を考えてみましょう。 const arr = [4, 1, 6, 8, 3, 9]; この場合、期待される出力は次の通りです。 const output = 117; 計算の流れ 偶数インデックス(0, 2, 4)にある要素は「4, 6, 3」 それらの合計は「4 + 6 + 3 = 13」 最後のインデックスの要素は「9」 したがって「13 × 9 = 117」となります コード例 以下が実際のコードです。 a + b

  14. JavaScriptで隣接する2数の合計が完全平方数となる配列を構築する方法

    本記事では、数値 n を受け取り、1からnまでの整数を隣り合う2つの数の合計が必ず完全平方数(平方数)になるように並べた配列を返すJavaScript関数を実装します。一見単純そうですが、すべての並び順を試すのは非現実的なため、ここでは「バックトラッキング」という手法を用いて効率的に解きます。 問題の定義 作成する関数は以下の条件を満たす必要があります。 戻り値の配列には、1からnまでの整数がそれぞれちょうど1回ずつ含まれること 隣接するどの2つの数を足しても、結果が平方数(1, 4, 9, 16, 25, …)になること 条件を満たす並びが存在しない場合は false を返すこと なお、

  15. JavaScriptで数値を展開形式(位ごとの分解表記)に変換する方法

    はじめに本記事では、JavaScriptを使って数値を「展開形式(拡張形式)」と呼ばれる文字列に変換する方法を解説します。展開形式とは、各桁の数字をその位の値(けたの重み)ごとに分解して表記する形式のことです。たとえば 56577 という数値は、次のように表されます。50000 + 6000 + 500 + 70 + 7問題の概要求められているのは、1つの数値を受け取り、その数値の展開形式を示す文字列を返すJavaScript関数です。この処理を実現するポイントは以下の通りです。数値を文字列化して、1桁ずつ取り出せるようにする各桁に対応する位の値(10のべき乗)を計算する値が 0 の桁は結果か

  16. JavaScriptで配列の各要素に数値を掛けるカリー化関数の実装方法

    課題 JavaScriptで、配列を引数に受け取り別の関数を返す関数を作成します。返された関数はさらに数値を引数として受け取り、最初の関数に渡された配列の各要素と、その数値との積からなる新しい配列を返す必要があります。 このように引数を段階的に受け取る設計はカリー化(currying)と呼ばれる手法です。アロー関数を連鎖させることで、非常に簡潔に実装できます。 コード例 以下がその実装例です。 const arr = [2, 5, 2, 7, 8, 4]; const num = 4; const produceWith = (arr = []) => (num) => {

  17. JavaScriptで各桁を降順に並べ替えて最大の数値を返す方法

    問題 数値 n を引数として受け取る JavaScript 関数を作成する必要があります。この関数は、与えられた数値の各桁を降順に並べ替えた結果を返すものとします。つまり、数字を組み替えることで、作成可能な最大の数値を求めるという課題です。 解決策のコード例 以下がその実装コードです − const num = 5423267; const arrangeInDescending = (num = 1) => { const str = String(num); const arr = str.split(''); arr.sort(

  18. JavaScriptで文字列のすべての一意な順列(重複なし)を生成する方法

    問題引数として文字列 str を受け取るJavaScript関数を作成します。この関数は、入力文字列から作り出せるすべての順列を生成し、重複が存在する場合はそれらを取り除いて返す必要があります。つまり、入力文字列に含まれる文字を、考えられるあらゆる順序で並べ替えた結果の中から、一意なものだけを求めるということです。例えば、入力が aabb のように同じ文字を含む場合、単純に全並べ替えを行うと同一の文字列が何度も現れますが、本記事の関数では aabb、abab、abba のような一意な組み合わせのみを出力します。コード例以下が実際のコードです。const str = aabb; const pe

  19. JavaScriptで文字列内のドット(.)をダッシュ(-)に置き換える方法

    問題 今回は、文字列を引数として受け取り、その文字列中に含まれるすべてのドット(.)をダッシュ(-)に置き換えた新しい文字列を返すJavaScript関数を作成します。 入力例 const str = this.is.an.example.string; 出力例 const output = this-is-an-example-string; ご覧のとおり、元の文字列 str 内のすべてのドット(.)がダッシュ(-)へと置き換えられています。 サンプルコード 以下が実際の実装例です。 const str = this.is.an.example.string; const replaceD

  20. 【JavaScript】ネストされた配列の全要素数(ディープカウント)を求める方法

    問題:ネストされた配列の全要素数を数える入れ子(ネスト)構造を持つ配列を受け取り、その中に存在するすべての要素の総数(ディープカウント)を返すJavaScript関数を作成します。入力const arr = [1, 2, [3, 4, [5]]];出力const output = 7;出力が7になるのは、第1階層に「1」「2」「[3, 4, [5]]」の3つ、第2階層に「3」「4」「[5]」の3つ、第3階層に「5」の1つの要素が存在し、入れ子の配列そのものも1つの要素としてカウントされるためです。すなわち 3 + 3 + 1 = 7 となります。サンプルコードconst arr = [1, 2

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:22/297  20-コンピューター/Page Goto:1 16 17 18 19 20 21 22 23 24 25 26 27 28