JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. 【JavaScript】ネストしたJSONオブジェクトをドット記法でフラット化する方法

    JavaScriptでは、APIレスポンスなどで受け取るJSONオブジェクトが、任意の深さまで入れ子(ネスト)になっていることがよくあります。このようなネスト構造を持つオブジェクトを、キーをドット記法で連結したフラットな1階層のオブジェクトへ変換したい場面は少なくありません。 例として、次のようなJSONオブジェクトを考えてみましょう。このオブジェクトは、いくらでも深くネストしうる構造を持っています。 const obj = { one: 1, two: { three: 3 }, four: { five: 5,

  2. 【JavaScript】配列から奇数回出現する要素を削除する方法を実装で解説

    JavaScriptで配列を操作していると、「同じ値が奇数回出現する場合に、その最後の出現だけを取り除きたい」という要件に出会うことがあります。本記事では、そのような処理をハッシュマップ(連想オブジェクト)を活用して効率的に実装する方法を解説します。問題の定義まず、次のような数値の配列を考えてみましょう。const arr = [1, 6, 3, 1, 3, 1, 6, 3];この配列に対して、奇数回出現する数値(ただし1回だけしか出現しない要素は除外)を見つけ出し、その最後の出現箇所を削除する関数を作成します。期待される結果上記の配列では、数値「1」と「3」がそれぞれ3回(奇数回)出現してい

  3. JavaScriptで12時間表記の時刻を24時間表記に変換する方法

    今回は、「05:00 PM」のような形式で与えられた時刻文字列を受け取り、それを24時間表記の時刻に変換して返すJavaScript関数を作成します。 const timeStr = 05:00 PM; 入力される文字列は常に同じ形式であることが前提です。つまり、以下のようなフォーマットになります。 HH:MM AM/PM この関数は、受け取った文字列に対して必要な計算を行い、対応する24時間表記の時刻を「HH:MM」の形式で返す必要があります。 具体例 たとえば、上記の文字列の場合、期待される出力は以下のとおりです。 const output = 17:00; 実装例 実際のコードは次のよう

  4. JavaScriptで同じ文字に挟まれた最長部分文字列の長さを求める方法

    問題の概要文字列を引数として受け取るJavaScript関数を作成する必要があります。この関数は、同じ2つの同一文字によって挟まれた部分文字列の中で最も長いものを見つけ、その長さを返します。入力例と出力例例えば、以下のような入力文字列を考えてみましょう。const str = sadtrsewak;この場合、期待される出力は次の通りです。const output = 6;なぜなら、2つの「a」の間には長さ6の部分文字列(dtrsew)が存在し、これが条件を満たす最も長い部分文字列だからです。解決アプローチこの問題は、各文字が最初に出現した位置を記録しておくことで効率的に解決できます。具体的には

  5. JavaScriptで配列を合計が等しい2つのサブ配列に分割できるか判定する方法

    問題概要整数の配列を唯一の引数として受け取るJavaScript関数を作成します。この関数の役割は、元の配列のすべての要素を使い切り、かつ各サブ配列の要素の合計が等しくなるように、配列を2つのサブ配列へ分割できるかどうかを判定することです。分割の際、元の配列の要素が1つも残らないようにする点が重要です。つまり、この問題は「配列を2つのグループに振り分けたとき、両グループの合計値が一致する組み合わせが存在するか」を確認するものです。入力例const arr = [5, 3, 7, 4, 1, 8, 2, 6];出力例const output = true;この場合、[5, 3, 4, 6] と

  6. JavaScriptで配列内のすべての奇数長サブ配列の合計を求める方法

    本記事では、整数の配列を引数として受け取るJavaScript関数の作成方法を解説します。この関数は、元の配列から生成できる長さが奇数のすべてのサブ配列(部分配列)を列挙し、それらに含まれる全要素の合計値を計算して返すものです。 問題の概要 例として、次の入力配列を考えてみましょう。 const arr = [1, 2, 3]; この場合、期待される出力は次のとおりです。 const output = 12; 対象となる奇数長のサブ配列は [1]、[2]、[3]、[1, 2, 3] の4つであり、それぞれの合計を足し合わせると 1 + 2 + 3 + (1 + 2 + 3) = 12 となる

  7. JavaScriptで最大三重積配列を求める方法|コード例付きでわかりやすく解説

    問題の概要整数の配列を唯一の引数として受け取るJavaScript関数を実装する必要があります。入力配列をもとに、以下の条件に従って同じ長さの新しい配列を構築します。出力配列の各要素は、その位置までに出現した「最大の3つの数値」の積となるインデックスが3未満の場合(まだ3つの要素が出現していない場合)は -1 を返す積の計算には同じ値を再利用できるが、それぞれ異なるインデックスに存在する要素である必要がある入力例と出力例たとえば、入力配列が以下の場合を考えてみましょう。const arr = [1, 2, 3, 4, 5, 6];期待される出力は次のとおりです。const output = [

  8. JavaScriptで1からnまでの整数に含まれる「1」の個数を数える方法

    はじめに 本記事では、正の整数を引数として受け取り、1からその数までのすべての正の整数に登場する数字「1」の合計出現回数を求めるJavaScript関数を作成します。対象となる数値自体に「1」が含まれている場合は、その分もカウントに含めます。 問題の例 たとえば、入力として次の数値が与えられたとします。 const num = 31; この場合、期待される出力は次のとおりです。 const output = 14; これは、「1」が以下の数値に出現するためです。 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 31 これらを順に確認すると、11だ

  9. JavaScriptで2つの文字列間のハミング距離を計算する方法

    ハミング距離とは?ハミング距離(Hamming Distance)とは、同じ長さを持つ2つの文字列のうち、互いに異なる文字が現れる位置の数を表す指標です。言い換えれば、一方の文字列をもう一方の文字列へと変換するために最低限必要な置換の回数ともいえます。ハミング距離は情報理論やエラー検出・訂正の分野で広く活用されており、通常は同じ長さの文字列同士に対して測定されます。本記事では、同じ長さの2つの文字列 str1 と str2 を受け取り、それらのハミング距離を計算して返すJavaScript関数を作成します。実装コード以下がその実装例です。 { let distance = 0; if

  10. JavaScriptでアナグラムの単語をグループ化する方法

    アナグラムとは同じ文字を別の順序に並べ替えることで互いに作り出せる2つの単語やフレーズは、互いの「アナグラム(Anagram)」と呼ばれます。たとえば、「rat」と「tar」はどちらも r・a・t の3文字で構成されているため、互いのアナグラムです。本記事では、アナグラムの文字列を含む可能性がある文字列の配列を受け取り、すべてのアナグラムを個別のサブ配列にグループ化して、その新しい配列を返すJavaScript関数の実装方法を解説します。期待される入出力たとえば、入力配列が次の場合:const arr = [rat, jar, tar, raj, ram, arm, mar, art];出力配

  11. JavaScriptで桁和が同じ数値をグループ化し、最大のグループの個数を求める方法

    本記事では、正の整数 n を引数として受け取り、1 から n までの整数を「各桁の数字の合計(桁和)」が同じもの同士でグループ分けし、要素数が最大となるグループの個数を返す JavaScript 関数の作成方法を解説します。 問題の概要 関数には正の整数 n が渡されます。まず、1 から n までの各整数について桁和を求め、桁和が等しい数値どうしを同じグループにまとめます。そのうえで、各グループの要素数を調べ、最も要素数の多いグループのサイズと一致するグループがいくつ存在するかを返します。 入力例 const num = 15; 出力例 const output = 6; グループの内訳 [

  12. JavaScriptでマトリックス内のラッキーナンバーをすべて見つける方法

    ラッキーナンバーとは?「ラッキーナンバー」とは、行列(マトリックス)の中で、自分の行における最小値であり、同時に自分の列における最大値でもある要素のことを指します。今回の課題は、整数の二次元配列を受け取るJavaScript関数を書くことです。この関数は、配列内に存在するすべてのラッキーナンバーを見つけ出し、新しい配列として返します。条件を満たす要素がひとつも存在しない場合は、空の配列を返します。入力例と出力例たとえば、次のような二次元配列が与えられたとしましょう。const arr = [     [5, 3, 7, 3],   &

  13. JavaScriptで各要素より小さい数の個数を数えて配列を作成する方法

    JavaScriptで、数値の配列を引数として受け取る関数を作成する必要があります。 この関数は、入力された配列をもとに新しい配列を構築します。新しい配列の各要素には、元の配列において「その要素よりも小さい値を持つ要素の個数」が格納されます。 処理のイメージ 例えば、入力配列が次のようになっているとします。 const arr = [2, 7, 3, 1, 56, 4, 7, 8]; この場合、出力される配列は次のようになります。 const output = [1, 4, 2, 0, 7, 3, 4, 6]; それぞれの値がどのように求められているか見てみましょう。 最初の要素 2:自分よ

  14. JavaScriptで2進数表現の「1」の個数に基づいて整数を並べ替える方法

    はじめに本記事では、JavaScriptを使って、整数の配列を2進数表現における「1」の個数に基づいて昇順に並べ替える方法を解説します。具体的には、以下のような要件を持つ関数を実装します。引数として整数の配列を1つ受け取り、各数値を2進数に変換したときに含まれる「1」の数が少ない順に並べ替えます。さらに、「1」の個数が同じ数値同士の場合は、その大小関係(値そのもの)に従って昇順にソートします。処理の流れ例えば、次の入力配列が与えられたとします。const arr = [34, 37, 23, 89, 12, 31, 23, 89];この場合、期待される出力は以下の通りです。const outp

  15. JavaScriptで文字列から1文字を削除するだけで別の文字列と一致するかどうかを確認する

    今回は、str1 と str2 という2つの文字列を引数として受け取るJavaScript関数を作成します。この関数は、str1 からちょうど1文字だけを削除することで str2 を作れるかどうかを判定します。条件を満たせる場合は true を返し、そうでなければ false を返します。入力例たとえば、入力として次のような文字列が与えられたとします。const str1 = chemistty; const str2 = chemisty;str1 の「t」を1つ削除すれば str2 と一致するため、期待される出力は次のようになります。const output = true;コード例以下が実

  16. JavaScriptで無限に繰り返し拡張される文字列から部分文字列を取得する方法

    問題の概要 今回作成するのは、次の3つの引数を受け取るJavaScript関数です。 第1引数:元となる文字列第2引数:開始インデックス第3引数:終了インデックス 関数は、第1引数の文字列が自分自身を末尾に何度も連結され、無限に伸びていくものと仮定したうえで、開始インデックスから終了インデックスまでの範囲に含まれる部分文字列を返します。 たとえば、入力が次の場合を考えてみましょう。 const str = helloo; const start = 12; const end = 15; 「helloo」が helloohelloohelloo… のように永遠に続くとすると、インデックス12

  17. JavaScriptで2次元配列の行・列の最大値を効率よく数える方法

    問題の概要 本記事では、整数を格納した2次元配列(マトリクス)を引数として受け取り、「自分が属する行と列のどちらにおいても最大値である」要素の個数を返すJavaScript関数を実装します。 一見シンプルな条件ですが、全要素を毎回素朴に比較すると非効率になりがちです。そこで、行ごとの最大値と列ごとの最大値を先に計算しておくことで、O(rows × cols) の計算量でスマートに解くことができます。 入力例と期待される出力 たとえば、次のような配列が入力された場合を考えてみましょう。 const arr = [ [21, 23, 22], [26, 26, 25],

  18. 【JavaScript】文字列から頭字語(アクロニム)を生成して返す方法

    文字列を唯一の引数として受け取るJavaScript関数を作成する必要があります。 この関数は、引数として渡された文字列フレーズをもとに頭字語(アクロニム)を構築し、その結果を返します。 頭字語を構築する際のルールは、大文字で始まる単語のみを対象とすることです。小文字で始まる単語は頭字語に含めません。 例 たとえば、入力文字列が以下の場合を考えてみましょう。 const str = Polar Satellite Launch Vehicle; このとき、期待される出力は次のとおりです。 const output = PSLV; サンプルコード const str = Polar Sate

  19. JavaScriptで配列内の0をすべて末尾に移動するインプレースアルゴリズムの実装方法

    問題概要整数の配列 arr が与えられたとします。求められているのは、元の配列を直接書き換える(インプレース)形ですべての 0 を配列の末尾へ移動させる関数を実装することです。その際、0 以外の要素どうしの相対的な順序は崩してはいけません。例として、入力配列が次のような場合を考えてみましょう。const arr = [0, 11, 0, 22, 67];この配列は、以下のように変換される必要があります。const output = [11, 22, 67, 0, 0];アルゴリズムのアプローチこの問題は二ポインタ(Two Pointers)のテクニックを使うことで効率的に解けます。考え方は次の

  20. JavaScriptで文字列から構築できる回文(パリンドローム)の数を数える方法

    本記事では、文字列と数値を引数として受け取り、その文字列に含まれる文字を使って構築できる「指定した長さの回文」の総数を求めるJavaScript関数の実装方法を解説します。 問題の概要 第一引数に文字列(str)、第二引数に数値(num)を受け取るJavaScript関数を作成します。この関数は、与えられた文字列strの文字を組み合わせて、ちょうどnum文字となる回文が何通り作れるかを数え、その個数を返す必要があります。 たとえば、入力が以下の場合を考えてみましょう。 const str = ij;const num = 4; このとき、期待される出力は次のとおりです。 const outpu

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:32/297  20-コンピューター/Page Goto:1 26 27 28 29 30 31 32 33 34 35 36 37 38