JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. 文字列1の一部を並べ替えて文字列2と一致させられるかを判定するJavaScript関数の作成方法

    問題の概要 文字列1(str1)に含まれる一部の文字を並べ替えることで文字列2(str2)と一致させられる場合には true を、そうでない場合には false を返す関数 scramble(str1, str2) を作成します。 具体例 str1 が cashwool、str2 が school の場合 → true を返す str1 が katas、str2 が steak の場合 → false を返す 解決のアプローチ ここでは、両方の文字列を1文字ずつに分割してソートし、短い方の文字列が長い方の文字列に部分文字列として含まれているかどうかを includes() メソッドで確認する

  2. JavaScriptでプロパティの有無に基づいてオブジェクト配列を並べ替える方法

    JavaScriptでは、オブジェクトが特定のプロパティを持っているかどうかに基づいて配列を並べ替えたいケースがあります。ここでは、次のような人物データのオブジェクト配列を例に、その実装方法を解説します。 const people = [{ firstName: Ram, id: 301 }, { firstName: Shyam, lastName: Singh, id: 1016 }, { firstName: Dinesh, lastName: Lamba, id: 231 }, { id: 341 }, { firstName: Karan,

  3. JavaScript(ES6)で大文字小文字と順序を無視して2つの文字列が等しいか比較する方法

    本記事では、2つの文字列を引数として受け取り、文字の出現順序や大文字・小文字の違いに関係なく、両者が同じ文字セットを持っているかどうかを判定する関数 isEqual() の実装方法を解説します。たとえば次のようなケースです。const first = Aavsg; const second = VSAAg; isEqual(first, second); // true方法1:配列と sort() を使う方法この方法では、まず文字列を split() で配列に変換し、Array.prototype.sort() メソッドで要素を並べ替えます。その後、join() で再び文字列に戻し、両者が完全

  4. JavaScriptで二分探索(バイナリサーチ)を実装する方法

    二分探索(バイナリサーチ)は、ソート済みの配列から特定の値を効率的に検索するためのアルゴリズムです。探索範囲を半分ずつ絞り込みながら処理を進めるため、先頭から順に調べる線形探索と比べてはるかに高速で、計算量は O(log n) になります。 ここでは、再帰呼び出しを利用したJavaScriptの二分探索関数 binarySearch() を作成します。この関数は次の4つの引数を受け取ります。 ソート済みの数値・文字列の配列 配列の開始インデックス(0) 配列の終了インデックス(length - 1) 検索したい値 値が配列内に存在する場合はそのインデックスを返し、存在しない場合は -1 を

  5. JavaScriptで配列内の隣接要素間の差分を求める方法

    数値リテラルからなる配列が与えられ、その配列内の連続する2つの要素の絶対差を返す関数を作成することを目標とします。例えば、以下のようなケースを考えてみましょう。入力配列: [23, 53, 66, 11, 67] 出力結果: [30, 13, 55, 56]出力を見ると、各要素は元の配列の隣接する値どうしを比較した差になっていることがわかります。具体的には次のように計算されています。|23 − 53| = 30|53 − 66| = 13|66 − 11| = 55|11 − 67| = 56実装の考え方この問題を解くには、インデックス1から配列の末尾まで繰り返し処理を行うforループを使用し

  6. JavaScriptで高々2種類の数値を含む最大スライス(部分配列)を求める方法

    問題の概要配列を引数として受け取り、2種類以下の異なる数値のみを含む最長の連続した部分配列(スライス)を返す関数を作成することを考えてみましょう。この問題を注意深く分析すると、安定した(条件を満たす)部分配列を判定しながら、元の配列を順番に走査していく処理が必要であることがわかります。このようなケースでは、スライディングウィンドウ(Sliding Window)アルゴリズムが非常に有効です。ウィンドウの右端を拡張しつつ、異なる数値の種類数が2を超えた時点で左端を縮めることで、効率的に最長部分配列を探索できます。実装コードスライディングウィンドウアルゴリズムを使った解法のコードは以下のとおりです

  7. 文字列をアルファベットの位置番号に変換するJavaScript関数の実装方法

    今回は、文字列を受け取り、余分な空白を取り除き、小文字に変換した上で、各文字が英語アルファベットの中で何番目に該当するかを示す数値の配列を返す関数を作成します。文字列に含まれる空白や記号などの特殊文字は無視します。処理の概要たとえば Hello world! という文字列を関数に渡すと、各文字がアルファベットの何番目か(a=1, b=2, … z=26)に対応する数値配列が出力されます。Input → Hello world! Output → [8, 5, 12, 12, 15, 23, 15, 18, 12, 4]「h」は8番目、「e」は5番目、「l」は12番目というように、各文字の位置が

  8. JavaScriptでオブジェクト配列の重複を削除する方法

    配列から重複するオブジェクトを取り除き、新しい配列を返す関数を作成する方法を解説します。ここで「重複」とは、2つのオブジェクトが同じ数のキーを持ち、同じキー名を含み、かつ各キーの値も完全に一致している場合を指します。それでは、実際にコードを書いてみましょう。このアプローチでは、JSON.stringify() で文字列化したオブジェクトをキーとしてマップ(連想配列)に格納します。すでに存在するキーが見つかった場合はそのオブジェクトをスキップし、初めて見るキーであれば新しい配列に追加していきます。サンプルコードconst arr = [ { timestamp: 5643283700

  9. 【JavaScript】文字列内のすべての単語の先頭に指定した文字を追加する方法

    はじめに本記事では、2つの文字列を引数として受け取り、1つ目の引数の文字列と同じ内容でありながら、すべての単語の先頭に2つ目の引数の文字列を付加した新しい文字列を返す関数をJavaScriptで作成する方法を解説します。具体的なイメージは以下のとおりです。入力 → 'hello stranger, how are you', '@@'出力 → '@@hello @@stranger, @@how @@are @@you'また、2番目の引数が省略された場合には、デフォルト値として「#」が自動的に適用される仕様とします。実装コード以下が実際のコードで

  10. 【JavaScript】配列の最初のn%だけを取得する関数の作り方

    JavaScriptでは、「配列と0〜100の数値(両端を含む)を受け取り、その配列の先頭からn%分の要素だけを返す関数」を作りたい場面があります。たとえば、第2引数が0なら空の配列を、100なら元の配列全体を、50なら半分の要素を返す、というイメージです。 さらに、第2引数が省略された場合はデフォルト値として50を使用する仕様にします。以下がその実装コードです。 サンプルコード const numbers = [3,6,8,6,8,4,26,8,7,4,23,65,87,98,54,32,57,87]; const byPercent = (arr, n = 50) => {

  11. JavaScriptで配列の配列から各サブ配列の平均値を求める方法

    本記事では、数値が格納された配列の配列(ネストされた配列)を受け取り、それぞれのサブ配列の平均値を要素として持つ新しい配列を返す関数 getAverage() を作成する方法を解説します。たとえば [[1, 2, 3], [4, 5, 6]] のような入力に対しては、各サブ配列の平均である [2, 5] を返すという仕組みです。実装の考え方実装には Array.prototype.map() と Array.prototype.reduce() を組み合わせます。まず元の配列に対して map を実行して各サブ配列を順に処理し、その内部で reduce を使って要素の合計を求めます。ここでは、各

  12. JavaScriptでundefinedやnullを含む配列の合計を求める方法

    JavaScriptでは、数値の配列の中に undefined や null が混ざっているケースはよくあります。こうした配列の合計を求める際、無効な値を除外して正しく計算したいことがありますよね。 そこで本記事では、配列を受け取って合計値を返す quickSum 関数を作成する方法を紹介します。この関数は、undefined や null を自動的に無視して計算を行います。 quickSum関数の実装例 以下が完全なコードです。 const arr = [23, 566, null, 90, -32, undefined, 32, -69, 88, null]; const quickSum

  13. JavaScriptのオブジェクトから指定したデータ型のプロパティを一括削除する方法

    本記事では、数値・文字列・真偽値・オブジェクトなど、さまざまなデータ型のプロパティが混在するJavaScriptのオブジェクトから、指定した型のプロパティだけをまとめて削除する関数の実装方法を解説します。 やりたいこと 以下のような条件を満たす関数 shedData を作成します。 第1引数: 処理対象のオブジェクト 第2引数: 削除したいデータ型の名前(number、string、object、boolean、symbol など) デフォルト動作: 第2引数が省略された場合は number をデフォルトとして使用する サンプルコード まず、複数のデータ型を含むオブジェクトを用意します

  14. JavaScriptで「*」演算子を使わずに2つの整数の積を求める方法

    JavaScriptでは、通常2つの数値の積を求める際に「*」演算子を使用します。しかし、コーディング試験や学習課題などでは、この演算子を使わずに積を計算する関数を実装する必要があることがあります。本記事では、そのような場面で役立つ2つのテクニックを具体的なコード例とともに紹介します。 方法1:除算演算子を2段階で利用する 乗算と除算は互いに逆の演算であるという性質を利用します。「ある数を、もう一方の数の逆数で割る」ことは、実質的に2つの数を掛け合わせることと同じになります。つまり、次の関係式が成り立ちます。 a × b = a ÷ (1 / b) これをコードにすると、以下のようになります。

  15. JavaScriptでオブジェクトのキーと値を反転させる方法(逆マッピング)

    JavaScriptでは、オブジェクトを受け取り、キーと値を入れ替えた新しいオブジェクトを返す関数 reverseObject() を作成する必要がある場面があります。これは「逆オブジェクトマッピング」と呼ばれる処理です。実装のアプローチこの問題は、Object.keys() で元のオブジェクトのキーを順番に取り出し、それぞれの「キーと値のペア」を「値とキーのペア」として新しいオブジェクトに格納していくことで実現できます。注意すべき点は、同じ値を持つキーが複数存在する可能性があることです。そのため、新しいオブジェクトの値は配列として管理し、該当する値がすでに存在する場合は配列に追加し、存在しな

  16. 【JavaScript】オブジェクトが配列内のすべてのキーを含んでいるか判定する方法

    containsAll() 関数とは 本記事では、2つの引数を受け取る関数 containsAll() を作成します。第一引数にはオブジェクト、第二引数には文字列の配列を渡します。この関数は、オブジェクトが配列内で文字列として指定されたすべてのプロパティ(キー)を持っているかどうかに応じて、ブール値(true / false)を返します。 実装の考え方 実装のアプローチはシンプルです。配列を反復処理しながら、各要素がオブジェクトのキーとして存在するかどうかを順番にチェックしていきます。もし配列内の文字列がオブジェクトのキーとして見つからなければ、その時点で処理を中断して false を返しま

  17. JavaScriptで大文字と小文字を区別せずに各文字の出現回数をカウントする方法

    文字列が与えられ、その中に含まれる各文字の出現回数(頻度)を返す関数を作成することを考えます。ただし、このとき大文字と小文字の違いは区別しないものとします。例えば「A」と「a」は同じ文字として扱い、まとめてカウントする必要があります。実装のアプローチこれを実現する最もシンプルで効率的な方法は、文字列を1文字ずつ反復処理しながら、「文字をキー」「出現回数を値」と持つオブジェクトを作成していくことです。ポイントは、処理の前に toLowerCase() メソッドを使って文字列全体を小文字に変換しておくことです。これにより、大文字・小文字を問わず同じ文字として集計できます。コード例 { co

  18. JavaScriptの配列からランダムに要素を取り出して削除する方法(配列が空になるまで繰り返す)

    文字列や数値のリテラルからなる配列が与えられたとき、その配列を受け取り、ランダムに1つの要素を削除しながら同時にコンソールへ出力し、配列が空になるまでこの処理を繰り返す関数 removeRandom() を作成することを考えます。この処理は、Math.random() を使って乱数を生成し、そのインデックスにある要素を Array.prototype.splice() で削除しながら出力することで実現できます。配列の長さが0になるまで while ループで繰り返すのがポイントです。コード例 {     while(array.length){  

  19. JavaScriptで配列の値の前後にゼロ(0)を動的に埋めるアルゴリズム

    課題の概要 月を表す配列が与えられ、各要素は1から12の間(両端を含む)の値を取るとします。この配列をもとに、必ず12個の要素を持つ「完全な月配列」を作成するのが今回の課題です。元の配列にその月の値が存在する場合はその値を使用し、存在しない場合はその位置に 0 を入れます。 入力と出力の例 入力 → [5, 7, 9] 出力 → [0, 0, 0, 0, 5, 0, 7, 0, 9, 0, 0, 0] それでは、実際のコードを見ていきましょう。 実装コード { const completed = []; for (let i = 1; i <= 12; i++) {

  20. 【JavaScript】合計が指定した数値に一致するすべての部分配列をスライディングウィンドウアルゴリズムで検索する方法

    問題の概要 数値の配列と1つの数値が与えられたとき、第2引数として渡された数値と合計が一致するすべての部分配列を配列として返す関数を作成するのが今回の課題です。 たとえば、次のような入力を考えてみましょう。 const arr = [23, 5, 1, 34, 12, 67, 9, 31, 6, 7, 27]; const sum = 40; console.log(requiredSum(arr, sum)); この場合、期待される出力は次の通りです。 [ [ 5, 1, 34 ], [ 9, 31 ], [ 6, 7, 27 ] ] これら3つの部分配列は、いずれも要素を足し合わせると40

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:123/297  20-コンピューター/Page Goto:1 117 118 119 120 121 122 123 124 125 126 127 128 129