JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptでパターンに沿って文字列をマスキング・整形する方法

    本記事では、第1引数に元となる文字列、第2引数にパターン文字列を受け取るJavaScript関数の実装方法を解説します。この関数は、パターン内の「#」記号を順番に入力文字列の各文字へ置き換えることで、電話番号やクレジットカード番号などを読みやすい形式に整形(マスキング)できます。要件の確認たとえば、次のような文字列とパターンが与えられたとします。const str = 123456789; const pattern = ## ## ## ###;この場合、関数はパターンに従って文字列を配置し、以下のような結果を返す必要があります。const output = 12 34 56 789;実装コ

  2. JavaScriptで文字列のすべての部分文字列を再帰的に取得する方法

    JavaScriptでは、文字列を引数として受け取り、その文字列から作成できるすべての部分文字列(サブストリング)を生成する関数を実装できます。本記事では、入力文字列のすべての部分文字列を配列にまとめて返す関数の作り方を、ループを使う方法と再帰を使う方法の2通りで解説します。 二重ループを使った実装 まずは、開始位置と終了位置を組み合わせる二重ループによるシンプルな実装例です。 { let i, j; const res = []; for (i = 0; i < str.length; i++) { for (j = i + 1; j < str.l

  3. JavaScript:ネストされた配列をもとに入れ子の順序なしリスト(ul)を作成するには?

    例えば、次のように文字列と配列が混在したネストされた配列があるとします。const arr = [ Value 1, [Inner value 1, Inner value 2, Inner value 3, Inner value 4], Value 2, Value 3, Value 4, Value 5, Value 6 ];このような任意のネストされた配列を受け取り、その構造に合わせてHTMLの順序なしリスト(ul)へ変換するJavaScriptプログラムを作成してみましょう。ここで注意すべきポイントはただ一つ、生成されるulのネスト構造が、元の配列のネスト構造と完全に

  4. JavaScriptのreduceとrangeを組み合わせて階乗関数を作成する方法

    JavaScriptで階乗を計算する関数を、ヘルパー関数 range() を活用して実装する方法を解説します。range 関数は、1から入力された数値までの連続した整数を要素とする配列を生成します。その後、メインの階乗関数がこの配列に対して Array.prototype.reduce() を実行し、全要素を乗算することで階乗を求めます。コード例実際の実装コードは以下の通りです。const range = (start, end) => { const acc = []; for (var i = start; i < end; i++) { acc

  5. JavaScriptのオブジェクトで値からキーを取得する方法

    JavaScriptでは、「値」を手がかりに「キー」を逆引きしたい場面がよくあります。例えば、次のように配列を値として持つオブジェクトがあったとしましょう。const obj = { key1: [value11, value12, value13, value14, value15], key2: [value21, value22, value23, value24, value25, value26, value27], key3: [value31, value32, value33, value34], key4: [value41, value

  6. JavaScriptで身長に基づいてキューを再構築するアルゴリズム

    ランダムな順番で並んでいる人々の一覧があるとします。各人は整数のペア (h, k) で表されます。ここで h はその人の身長、k は「その人より前に立っている、身長が h 以上である人の数」を意味します。 本記事では、与えられた情報をもとに元のキュー(整列)を再構築するアルゴリズムをJavaScriptで実装します。 注: 人数は1,100人未満であるものとします。 入力例 const arr = [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]; この場合、期待される出力(再構築されたキュー)は次のようになります。 const output = [[5,

  7. JavaScriptでマトリックス(行列)内のラッキーナンバーを見つける方法

    すべての要素が互いに異なる m × n 行列が与えられたとき、その中にある「ラッキーナンバー」をすべて見つけて返すのが今回の課題です。ラッキーナンバーとは、自分の属する行の中で最小値であり、かつ自分の属する列の中で最大値である要素のことを指します。具体例たとえば、次のような入力配列を考えてみましょう。const arr = [     [3,7,8],     [9,11,13],     [15,16,17] ];この場合の出力は次のようになります。const output

  8. 【JavaScript】配列から指定した数値を削除し、残りの要素を左にシフトする方法

    今回は、数値の配列を第1引数に、削除したい数値を第2引数に受け取るJavaScript関数を作成します。この関数は、第2引数で指定された数値が配列内に存在する場合、その要素を取り除き、それより右側にあるすべての要素を1つずつ左へシフトする必要があります。唯一の条件は、slice() や splice() をはじめとする配列操作系の組み込みメソッドを使用してはいけないという点です。また、同じ数値が配列内に複数存在する場合は、最初に出現したものだけを削除します。処理内容の例たとえば、入力配列が次のような場合を考えてみましょう。const arr = [3, 5, 6, 3, 7, 8, 8, 6]

  9. JavaScriptで「#」の位置を固定したまま配列を反転させる方法

    今回は、リテラル値の配列を受け取り、「#」が含まれているインデックスはそのまま維持しつつ、それ以外の要素だけを反転させて返すJavaScript関数を作成します。 たとえば、次のような配列が与えられた場合: [18, -4, #, 0, 8, #, 5] 期待される出力は以下のとおりです。 [5, 8, #, 0, -4, #, 18] ご覧のとおり、数値部分だけが逆順に並べ替えられ、「#」は元の位置(インデックス)に残ったままになっています。 解決のアプローチ この問題は、次の3つのステップで解決できます。 ステップ1: reduce() を使って、「#」が存在するすべてのインデックス番号

  10. JavaScriptで数値の範囲を指定した個数の区間に分割する方法

    問題の概要0から始まり、ある正の整数 n で終わる区間を考えます。この区間は配列を使って次のように表すことができます。const interval = [0, n];ただし、範囲が必ず0から始まることは分かっているため、単に上限値だけで表すことも可能です。const interval = n;求められる処理ここで、2つの数値を引数として受け取るJavaScript関数を作成します。第1引数: 0から始まり、その数で終わる区間を表します。第2引数: 元の区間をいくつの等間隔の区間に分割するかを指定します(可能な場合)。具体例たとえば、入力が「3」と「2」だった場合を考えてみましょう。元の区間は

  11. JavaScriptで合計がKになる連続部分配列の個数を求める方法

    はじめに本記事では、第1引数として数値の配列、第2引数として単一の数値を受け取るJavaScript関数を作成します。この関数の役割は、「合計が第2引数で指定した値と一致する連続する部分配列(サブ配列)」の総数を数えて返すことです。なお、配列内のすべての数値は正の数であることが保証されているものとします。この前提があるため、後述するスライディングウィンドウ法を非常に効率的に適用できます。入力例const arr = [1, 1, 1]; const sum = 2;この場合、出力は 2 になります。配列 [1, 1, 1] の中には、合計が 2 になる連続部分配列がちょうど2つ存在するためです

  12. JavaScriptで各要素より小さい数の個数を求める関数を実装する方法

    今回は、数値の配列を唯一の引数として受け取るJavaScript関数を作成する方法を解説します。この関数は、元の配列の各要素について、「その要素より小さい値がいくつあるか」を計算し、その個数を対応する位置に格納した新しい配列を返すものです。問題の概要例えば、次のような入力配列が与えられたとします。const arr = [3, 5, 4, 1, 2];この場合、期待される出力は以下の通りです。const output = [2, 4, 3, 0, 1];出力の意味を確認してみましょう。最初の要素「3」より小さい数は「1」と「2」の2つなので、結果の先頭は「2」になります。同様に「5」より小さい

  13. JavaScriptで配列の中央値を計算する方法

    本記事では、数値の配列を受け取り、その中央値(メジアン)を返すJavaScript関数の作成方法を解説します。中央値の統計的な意味中央値とは、昇順または降順に並べ替えた数値のリストにおいて、ちょうど真ん中に位置する値のことです。極端な外れ値の影響を受けにくいため、単純な平均値よりもデータセットの実態をより正確に表せる場合があります。実装の方針まず、元の配列を変更しないようコピーしてから昇順にソートします。そのうえで、要素数に応じて処理を分けます。要素数が奇数の場合: ソート後の配列の中央にある1つの値をそのまま返します。要素数が偶数の場合: 中央に隣り合う2つの値を取り出し、その平均値を返しま

  14. JavaScriptでフィボナッチ数列のN番目の要素を取得する方法

    JavaScriptで、1つの数値を引数として受け取る関数を作成する必要があります。この引数を n と呼びましょう。この関数は、フィボナッチ数列の n 番目の要素を返す必要があります。期待される出力例fibonacci(10) → 55 を返す fibonacci(3) → 2 を返す fibonacci(6) → 8 を返す fibonacci(2) → 1 を返すフィボナッチ数列とは、最初の2項が 1 であり、それ以降の各項が直前の2項の和となる数列です。つまり、1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ... のように続いていきます。実装コード以下は、配列を使って

  15. JavaScriptで配列内の全要素の組み合わせを取得するアルゴリズム

    はじめに 本記事では、文字列の配列を受け取り、その配列に含まれるすべての要素の組み合わせを生成して返すJavaScript関数を作成します。ここでの「組み合わせ」とは、配列から1つ以上の要素を選んで作られるすべてのパターンを指します。 入力例と期待される出力 たとえば、入力配列が次のような場合: const arr = [a, b, c, d]; 出力は次の15通り(空の組み合わせを除いた数)になります。 const output = [a, ab, abc, abcd, abd, ac, acd, ad, b, bc, bcd, bd, c, cd, d]; アルゴリズムの考え方 この種

  16. JavaScriptで2つの整数間のランダムな整数を生成する方法

    本記事では、ちょうど2つの数値を要素として持つ配列(範囲の指定)を受け取り、その範囲内(両端を含む)に収まるランダムな整数を生成するJavaScript関数の作成方法を解説します。ランダムな数値の生成には標準組み込みオブジェクトの Math.random() を使用し、小数点以下を切り捨てて整数化するために Math.floor() を組み合わせます。実装コードconst range = [5, 15]; const randomBetween = ([min, max]) => { // +1 することで最大値も範囲に含める const random = Math.ra

  17. JavaScriptで配列の奇数と偶数を分けて並べ替える方法

    はじめに本記事では、整数の配列を受け取り、すべての奇数を先頭に、偶数をその後に配置するように並べ替えるJavaScript関数の実装方法を解説します。要件の整理関数に求められる条件は以下のとおりです。入力として整数の配列を受け取るすべての奇数を偶数より前に配置する奇数同士・偶数同士の相対的な順序は問わない入力例と出力例たとえば、次の配列が入力されたとします。const arr = [0, 2, 4, 6, 8, 0, 1, 3, 5, 7, 9, 1];この場合、正しい出力のひとつは次のようになります(奇数がすべて偶数より前に来ていればよく、正解は複数存在します)。const output =

  18. JavaScriptでネストしたJSONオブジェクトの各エントリに一意のIDを付与する方法

    この記事では、多階層にネストしたJSON形式の配列に対して、titleプロパティを持つすべてのオブジェクトに一意のidを付与する方法を解説します。重要なのは、元の配列をコピーせず、その場で直接書き換えるという点です。 前提となるデータ構造 例として、芸術分野のカテゴリを階層的に表現した次のような配列を考えます。トップレベルの「Arts」から始まり、「Performing arts」→「Music」「Dance」「Television」「Theatre」と、カテゴリが入れ子になっている点が特徴です。 const arr = [ { Arts: [ { Pe

  19. JavaScriptでオブジェクトの配列を別のフィルター配列を使って絞り込む方法

    はじめに本記事では、JavaScriptで「オブジェクト(連想配列)の配列」を、別の配列に含まれるキーと値のペアを条件としてフィルタリングする方法を解説します。まず、次のような2つの配列があるとします。1つ目はデータ本体となる配列、2つ目はフィルター条件を格納した配列です。const data = [ {XD_A:XDL,XD_B_1:38,XD_B_2:PB}, {XD_A:XDR,XD_B_1:51,XD_B_2:PB}, {XD_A:XDL,XD_B_1:58,XD_B_2:PB}, {XD_A:XDR,XD_B_1:38,XD_B_2:PB},

  20. JavaScriptで配列内の要素間の距離(差分)を求める方法

    はじめにJavaScriptでは、ソート済みの数値配列から各要素同士の差分を求め、それをサブ配列としてまとめたいケースがあります。本記事では、昇順に並んだ数値配列を入力として受け取り、各要素とそれ以降の要素との差分からなるサブ配列を生成する関数の実装方法を解説します。問題の定義まず、次のような昇順にソートされた数値配列を例に考えてみましょう。const arr = [2, 5, 7, 8, 9];この配列に対して、各要素について「その要素と、それ以降の各要素との差」を計算し、結果をサブ配列として格納していきます。最初の要素「2」の場合先頭の要素 2 と、それ以降の要素との差は以下のようになりま

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:42/297  20-コンピューター/Page Goto:1 36 37 38 39 40 41 42 43 44 45 46 47 48