JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptで分割統治法を実装してクイックソート(QuickSort)を作る方法

    クイックソート(QuickSort)とはクイックソートは、代表的な分割統治法(Divide and Conquer)に基づくソートアルゴリズムです。各パスごとに基準となる「ピボット」と呼ばれる要素を1つ選び、ピボットより小さい値をすべて左側へ、大きい値をすべて右側へ配置します(昇順ソートの場合。降順ソートならこの逆になります)。この操作を再帰的に繰り返すことで、配列全体が徐々に整列されていきます。平均計算量は O(n log n) と非常に高速で、実務でも広く利用されている効率的なソート手法です。実装例ここでは、数値の配列を受け取り、クイックソートを使って昇順に並べ替えるJavaScript関

  2. 【JavaScript】オブジェクトをMap(マップ)に変換する方法を解説

    JavaScriptでは、キーと値のペアを持つ通常のオブジェクトを、Mapオブジェクトへ変換したい場面があります。本記事では、その具体的な実装方法をサンプルコード付きで解説します。前提となるオブジェクトまず、以下のようなオブジェクトを想定します。const obj = { name: Vikas, age: 45, occupation: Frontend Developer, address: Tilak Nagar, New Delhi, experience: 23, };このようなオブジェクトを受け取り、すべてのキーと値のペアを保持した Map

  3. 【JavaScript】配列の隣接要素を2つずつ掛けて合計する方法

    本記事では、数値の配列を受け取り、隣接する要素を2つずつ掛け合わせた結果をすべて合計した値(交互乗算和)を返すJavaScript関数の作成方法を解説します。 問題の概要 例えば、次のような配列が与えられたとします。 const arr = [1, 2, 4, 1, 2, 3, 4, 3]; この場合、出力は以下のように計算されます。 1*2 + 4*1 + 2*3 + 4*3 = 2 + 4 + 6 + 12 したがって、期待される最終的な出力は次のとおりです。 24 サンプルコード それでは、この処理を実装したコードを見てみましょう。 const arr = [1, 2, 4, 1, 2,

  4. JavaScriptで文字列に含まれる数値を抽出して合計する方法

    本記事では、数字が混在した文字列から1桁の数値をすべて抽出し、その合計を返すJavaScript関数の作成方法を解説します。例として、次のような数字と文字が混ざった文字列を考えてみましょう。const str = gdf5jhhj3hbj4hbj3jbb4bbjj3jb5bjjb5bj3;実装例それでは、この処理を実現するコードを書いていきます。 { const strArr = str.split(); let res = 0; for(let i = 0; i < strArr.length; i++){ if(+strArr[i]){

  5. JavaScriptのswitch文で文字列から計算機を実装する方法

    はじめに 今回は、「4 add 6」のような形式の文字列を受け取り、対応する演算結果を返すJavaScript関数を作成する方法を解説します。 入力される文字列は、左右に2つの数字が配置され、その間に演算内容を表す英単語が挟まれた構造になっています。例えば、次のような文字列です。 4 add 6 6 divide 7 23 modulo 8 中央の単語には、次の5種類のいずれかが指定されます。 add, divide, multiply, modulo, subtract それぞれ「加算」「除算」「乗算」「剰余」「減算」に対応します。私たちのタスクは、この演算子に基づいて正しい計算結果を返すこ

  6. 【JavaScript】数値の最大桁と最小桁の差を求める方法

    今回は、数値を引数として受け取り、その数値に含まれる最大の桁(数字)と最小の桁(数字)の差を返すJavaScript関数を作成します。問題の例たとえば、数値が 5464676 の場合を考えてみましょう。最小の桁:4最大の桁:7したがって、この関数が返すべき出力は 7 - 4 = 3 となります。実装コードこの関数は、再帰処理を使って下の桁から順に各数字を取り出し、その都度最小値と最大値を更新していくことで実現できます。 { if(num){ const digit = num % 10; return difference(Math.floor(num

  7. JavaScriptでオブジェクトを配列に変換する方法|キーと値のペアを配列化する実装例

    はじめに JavaScriptでは、オブジェクトのデータを配列形式に変換したい場面がよくあります。たとえば、次のようなキーと値のペアを持つオブジェクトがあるとしましょう。 const obj = { name: Vikas, age: 45, occupation: Frontend Developer, address: Tilak Nagar, New Delhi, experience: 23, salary: 98000 }; 今回の課題は、このオブジェクトを引数として受け取り、各サブ配列が1つのキーと値のペアに対応する「配列の配列」を返

  8. 【JavaScript】2つの配列を結合して重複を1回だけ残す方法

    問題の概要 次のような2つのリテラル配列があると仮定します。 const arr1 = [2, 4, 5, 3, 7, 8, 9]; const arr2 = [1, 4, 5, 2, 3, 7, 6]; この2つの配列を引数として受け取り、重複する要素を除外した(すべての要素が1回だけ出現する)新しい配列を返すJavaScript関数を作成する必要があります。 コード例 それでは、この関数のコードを見ていきましょう。 const arr1 = [2, 4, 5, 3, 7, 8, 9]; const arr2 = [1, 4, 5, 2, 3, 7, 6]; const mergeArr

  9. JavaScriptで配列が回文かどうかを判定する方法

    配列の要素を前から読んでも後ろから読んでも同じ順序になっている場合、その配列は「回文(パリンドローム)」であると言えます。本記事では、リテラルの配列を受け取り、それが回文であるかどうかを判定するJavaScript関数の実装方法を解説します。 回文判定の基本的な考え方 回文判定では、配列の先頭と末尾から順番に要素を比較していきます。中央に到達するまで、arr[i] と arr[l-i-1] が一致していることを確認し、1つでも異なる要素があればその時点で false を返します。すべての比較を通過できれば、その配列は回文であり true を返します。 実装コード 実際のコードを見てみましょう。

  10. 【JavaScript】数値をn個の要素に分割して配列として取得する方法

    本記事では、2つの数値 m(合計値)と n(要素数)を受け取り、「すべての要素を足し合わせると m になる、サイズ n の配列」を返すJavaScript関数の作成方法を解説します。 基本的な考え方 もっともシンプルなアプローチは、合計値を要素数で均等に割ることです。たとえば「合計5を8個の要素に分割する」場合、5 ÷ 8 = 0.625 となるため、各要素に 0.625 を格納すれば要件を満たせます。 サンプルコード 以下が実際の実装例です。 {     const res = [];     for(let

  11. JavaScriptでバブルソートを実装するコードをわかりやすく解説

    今回は、数値などのリテラルからなる配列を受け取り、バブルソートを使って並べ替えるJavaScript関数を作成します。バブルソートは、隣り合う要素同士を比較し、順序が正しくなければ入れ替えるという処理を繰り返す、最も基本的なソートアルゴリズムの一つです。バブルソートの仕組みバブルソートでは、配列内の隣接する2つの要素を順番に比較していきます。大小関係が逆になっている場合は要素を交換し、これを配列全体に対して繰り返すことで、大きな値が徐々に末尾へ「浮かび上がる」ように移動していきます。この動きが泡(バブル)が水面に上がっていく様子に似ていることから、「バブルソート」という名前が付いています。サン

  12. 【JavaScript】配列をn番目ごとの要素の合計値にまとめる方法

    本記事では、数値の配列を受け取り、インデックスがnの倍数である位置にある要素だけを抽出して合計値を返すJavaScript関数の実装方法を解説します。 実装の考え方 この関数は、以下の手順で実装できます。 合計を保持する変数を0で初期化する forループで配列を先頭から順に走査する 現在のインデックスがnumで割り切れる場合のみ、その要素を合計に加算する 該当しないインデックスはcontinue文でスキップする ループ終了後、最終的な合計値を返す コード例 実際のコードは以下の通りです。 const arr = [1, 4, 5, 3, 5, 6, 12, 5, 65, 3, 2, 6

  13. JavaScriptで明日と明後日の日付を取得する方法

    JavaScriptで明日と明後日の日付を取得する方法 JavaScriptのDateクラスでは、new Date()を実行することで現在の日付オブジェクトを取得できます。この記事では、その日付をもとに「明日」と「明後日」の日付を求める方法を解説します。 この処理はとてもシンプルで、数行のコードで実現可能です。 まずは今日の日付を取得する 基準となる今日の日付を、以下のようにして取得します。 // 今日の日付を取得 const today = new Date(); 明日と明後日を計算するコード 今日の日付を新しいDateオブジェクトとしてコピーし、そこに日数を加算することで、明日と明後日

  14. 【JavaScript】数学ライブラリを使わずに完全平方数を判定する方法

    本記事では、Math.sqrt() などの数学ライブラリを使用せずに、渡された数値が完全平方数かどうかを判定してブール値(true / false)を返すJavaScript関数の実装方法を解説します。 完全平方数とは 完全平方数とは、ある整数を自分自身と掛け合わせた(2乗した)結果として得られる数のことです。例えば、4は「2 × 2」、81は「9 × 9」なので、どちらも完全平方数です。 完全平方数の例 4, 16, 81, 256, 441, 729, 9801 実装の方針 数学ライブラリが使えない場合の基本的な考え方はシンプルです。1から順に整数を2乗していき、対象の数と一致するか

  15. 【JavaScript】2つの文字列を連結するプログラム ― 重複する文字を1つ省略する方法

    本記事では、2つの文字列を受け取り、それらを連結するJavaScript関数の作成方法について解説します。ポイントは、最初の文字列の最後の文字と、2番目の文字列の最初の文字が同じだった場合、重複する文字のうち1つを省略して連結するという処理です。要件の整理引数として2つの文字列を受け取る2番目の文字列を1番目の文字列の末尾に連結するただし、1番目の文字列の末尾の文字と2番目の文字列の先頭の文字が同一の場合は、どちらか一方を省略する入力例例えば、以下のような2つの文字列を扱うケースを考えてみましょう。const str1 = Food; const str2 = dog;この場合、「Food」の

  16. JavaScriptで文字列の先頭n文字を削除する方法

    JavaScriptでは、文字列と数値 n を引数に受け取り、その文字列から先頭の n 文字を取り除いた新しい文字列を返す関数を簡単に作成できます。処理のイメージたとえば、元の文字列が次のようになっているとします。const str = this is a string;ここで n = 5 を指定した場合、先頭の5文字(this )が削除され、出力は次のようになります。const output = is a string;実装コード以下は、実際に関数を実装したコード例です。電話番号の先頭にある国コード(「+91」「+1」など)を除去するケースを想定しています。 length){

  17. JavaScriptで指定した金額に必要な紙幣の最小枚数を求める方法

    1000単位、500単位、100単位、50単位、20単位、10単位、5単位、2単位、1単位という9種類の額面を持つ通貨システムがあると仮定します。 特定の金額が与えられたとき、その金額をちょうど合計できる紙幣の最小枚数を計算する関数を作成する必要があります。 例 たとえば、金額が 512 の場合を考えてみましょう。 512 を構成する最小の紙幣の組み合わせは以下のとおりです。 ・500 単位 × 1 枚 ・10 単位 × 1 枚 ・2 単位 × 1 枚 この場合、関数は合計枚数である 3 を返す必要があります。 解決のアプローチ:貪欲法(グリーディアルゴリズム) この種の問題は「貪欲法」と呼ば

  18. JavaScriptで指定した範囲内の素数の個数を求める方法

    問題の概要 今回は、2つの数値(a と b)を受け取り、その間に存在する素数の総数を返す JavaScript 関数を作成します。a と b 自体が素数である場合は、それらもカウントに含めます。 例を見てみましょう。 a = 2、b = 21 の場合、 この範囲内の素数は 2, 3, 5, 7, 11, 13, 17, 19 の8個 この場合、関数は 8 を返す必要があります。 実装の考え方 まず、ある数が素数かどうかを判定する補助関数 isPrime() を用意します。判定には、2 から num/2+1 未満までの整数で順番に割り切れるかを確認する方法を使います。1つでも割り切れる数があれば

  19. JavaScriptで数値配列の合計を求める:forEach()とreduce()の処理速度を徹底比較

    ES6で導入された配列メソッドのうち、forEach()とreduce()はどちらも配列の各要素にアクセスして処理を行うことができます。しかし、巨大な数値配列の合計を求める場合、どちらのメソッドがより高速に動作するのでしょうか。本記事では、両者の実行時間を実際に計測して比較します。ここで実際に巨大な配列を用意するのは現実的ではないため、合計を求める処理を大量の回数(反復)繰り返し実行することで、巨大な配列を扱う状況をシミュレーションします。コード例それでは、比較用のコードを見てみましょう。const arr = [1, 4, 4, 54, 56, 54, 2, 23, 6, 54, 65, 6

  20. JavaScriptで2つの文字列のASCIIスコアを比較して差を求める方法

    ASCIIコードとはASCII(アスキー)は7ビットの文字コード体系で、各ビットの組み合わせが一意の文字を表します。英字アルファベットの一つひとつには、固有の10進数ASCIIコードが割り当てられています。ここでは、2つの文字列を受け取り、それぞれの「ASCIIスコア」(文字列内の各文字のASCIIコード10進数値の合計)を計算し、その差を返す関数を作成していきます。実装例それでは、実際のコードを見てみましょう。 {     const firstScore = calculateScore(str1);     

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:97/297  20-コンピューター/Page Goto:1 91 92 93 94 95 96 97 98 99 100 101 102 103