-
JavaScriptでバブルソートを使って配列をソートする方法
JavaScriptで、リテラル値の配列を受け取り、バブルソートを使って並べ替える関数を作成してみましょう。ここでは、実際に動作するサンプルコードとその仕組みを詳しく解説します。 バブルソートとは バブルソートは、隣り合う要素同士を比較して、順序が正しくなければ入れ替えるという操作を繰り返すシンプルなソートアルゴリズムです。大きな値が徐々に配列の末尾へ「泡」のように浮かび上がっていく様子から、この名前が付けられています。計算量はO(n²)と効率は劣りますが、ロジックが分かりやすく、学習用のアルゴリズムとして最適です。 実装例 それでは、実際のコードを見ていきましょう。 = 0; j--){
-
JavaScriptでネストされた配列内の数値の積を再帰的に計算する方法
ネストされた配列の中には、数値だけでなく、nullやundefined、falseなどのfalsyな値(0を含む)、さらには文字列まで混在していることがあります。本記事では、このような複雑な構造を持つ配列を受け取り、その中に存在する数値のみの積を計算して返すJavaScript関数の作成方法を解説します。要件と考え方今回の課題では、以下の点に注意する必要があります。配列は何重にもネストされている可能性があるため、再帰的な処理が必要です。null、undefined、false、0といったfalsyな値は積の計算から除外します。特に0は掛けると結果が0になってしまうため、明示的に無視するのがポイ
-
JavaScriptで配列内の2番目に頻出する要素を効率的に見つける方法
JavaScriptを使って、配列の中で2番目に多く出現する要素を取得したいケースは意外と多いものです。例えば、アンケートデータの分析やログの集計などで、最頻値だけでなく「次に多い値」を知りたい場面があるでしょう。 この記事では、Mapオブジェクトとreduce()メソッドを組み合わせて、2番目に頻出する要素をシンプルに求める方法を解説します。 実装の考え方 処理の流れは以下の3ステップです。 出現回数のカウント: reduce()を使って各要素の出現回数をMapに記録します。 配列への変換: Array.from()でMapを[キー, 出現回数]のペア配列に変換します。 並べ替え: 出現
-
JavaScriptで文字列を指定した数のパーツに分割する方法
この記事では、文字列と数値 n を引数として受け取り、元の文字列をできるだけ均等な長さの n 個の部分文字列に分割し、それらを配列として返す JavaScript 関数の実装方法を解説します。文字列の長さが n で割り切れる場合はすべてのパーツが同じ長さになりますが、割り切れない場合でも、先頭から順に各パーツへ文字を振り分けていくことで、自然な形で分割することが可能です。実装のポイント以下のコードでは、split() で文字列を1文字ずつに分解し、reduce() を使って各パーツに文字を順番に追加していきます。現在のパーツが目標の長さ(文字列全体の長さ ÷ n)に達した時点で、次のパーツへ移
-
JavaScriptで2つの配列の対応する要素が等しいかどうかを判定する方法
本記事では、2つの配列を受け取り、対応する要素同士を比較するJavaScript関数の作成方法を解説します。すべての対応する要素が等しい場合には true を返し、1つでも異なる要素があれば false を返す関数を実装していきます。実装の考え方まず、2つの配列の長さを比較します。長さが異なる時点で対応する要素同士の比較は成立しないため、即座に false を返します。次に、ループ処理で各要素を順番に厳密等価演算子(===)を使って比較し、不一致が見つかった時点で false を返します。最後まで一致が続けば true を返します。コード例実際のコードは以下のとおりです。const arr1
-
JavaScriptで最大値・最小値を除外した平均値を計算する方法
数値の配列を受け取り、その要素のうち最大値と最小値を除外した平均値を返すJavaScript関数を作成する方法を解説します。アプローチArray.prototype.reduce() メソッドを使えば、配列を一度だけ走査しながら「合計値・最小値・最大値」を同時に求められます。最後に合計値から最小値と最大値を引き、残りの要素数で割ることで、除外後の平均値を効率的に計算できます。コード例 max) { max = val; } if (val < min) { min = val; } return { min, max, sum };
-
JavaScriptで配列のn番目ごとの要素の合計を求める方法
本記事では、数値の配列を受け取り、インデックスが n の倍数にあたる要素のみを抽出して、それらの累積合計を返す JavaScript 関数の作成方法を解説します。実装例実際のコードは以下のとおりです。const arr = [5, 3, 5, 6, 12, 5, 65, 3, 2]; const num = 3; const nthSum = (arr, num) => { let sum = 0; for(let i = 0; i < arr.length; i++){ &
-
JavaScriptで完全平方数を判定する方法
本記事では、数値を受け取り、その数値が完全平方数であるかどうかに基づいてブール値(true / false)を返すJavaScript関数の作成方法について解説します。完全平方数とは?完全平方数とは、ある整数を2乗した値と一致する数のことです。例えば、12 × 12 = 144 となるため、144は完全平方数です。同様に、14 × 14 = 196、11 × 11 = 121 も完全平方数に含まれます。完全平方数の例:144, 196, 121, 81, 484実装例以下のコードでは、1から順に整数の2乗を計算し、対象の数値と一致するかどうかを確認することで、完全平方数かどうかを判定しています
-
【JavaScript】文字列をスマートに連結する関数の実装方法
今回は、2つの文字列を受け取り、それらを連結するJavaScript関数の作成方法を解説します。単純な連結ではなく、少し賢い処理を行うのがポイントです。 要件 求められる仕様は以下のとおりです。 関数は2つの文字列を引数として受け取る 2番目の文字列を1番目の文字列の後ろに連結して返す ただし、1番目の文字列の末尾の文字と、2番目の文字列の先頭の文字が同じ場合は、重複する文字を1つ省略する 例えば Food と dog を連結する場合、通常なら Fooddog となりますが、d が重複しているため、結果は Foodog になります。 コード例 実際のコードは次のとおりです。 const s
-
JavaScriptで文字列から最初のk文字を削除する方法
問題の概要JavaScriptで、文字列と数値 k を引数として受け取り、文字列の先頭 k 文字を取り除いた新しい文字列を返す関数を作成する必要があります。例たとえば、元の文字列が以下であるとします。const str = "this is a string"ここで、削除する文字数が次のとおりだとします。n = 4この場合、期待される出力は以下になります。const output = " is a string"実装コードこの処理を実現するコードは以下のとおりです。const str = this is a string; const removeN =
-
JavaScriptで指定した範囲内の素数の個数を求める方法
はじめに 本記事では、2つの数値を受け取り、その範囲内に存在する素数の総数を返すJavaScript関数の実装方法を解説します。引数として渡された2つの数値自体が素数である場合も、カウントに含めます。 具体例 例えば、a = 21、b = 38 が与えられたケースを考えてみましょう。 この範囲内に存在する素数は「23、29、31、37」の4つです そのため、関数は 4 を返す必要があります コード例 以下が実際のコードになります。 const isPrime = num => { let count = 2; while(count < (num / 2)+
-
JavaScriptで配列内の重複する値を1つにまとめて合計する方法
JavaScriptでは、重複した数値を含む配列を受け取り、同じ値をすべて1つの要素にまとめてその合計を求める関数を作成できます。たとえば、[1, 3, 1, 3]という配列が与えられた場合、値「1」は2回出現するので2、値「3」は3回出現するので9として出力します。この処理は、reduce()メソッドとMapオブジェクトを組み合わせることで簡潔に実装できます。まず各値の出現回数をMapに記録し、その後「値 × 出現回数」を計算することで、重複分を合計した配列を生成します。サンプルコード el[0] * el[1]); }; console.log(sumDuplicate(input));実
-
JavaScriptで負の整数の各桁の合計を求める方法
本記事では、負の整数を受け取り、その各桁の合計を返すJavaScript関数の作成方法を解説します。問題の概要負の整数を引数として受け取り、各桁の値から合計を算出して返す関数を実装します。ここでは、マイナス記号の直後にある最初の桁を負の値として扱い、残りの桁を正の値として加算するアプローチを紹介します。例えば、次の数値が入力された場合を考えてみましょう。-5456出力この場合、期待される出力は次のとおりです。-5+4+5+6 10実装コードこの問題を解くためのコードは以下のとおりです。const num = -5456; const sumNum = num => { &nb
-
JavaScriptで文字列を結合する際にfalsyな値を除外する方法
ここで扱うのは、通常の文字列のほかに、nullやundefined、0、空文字列といったfalsy(偽と評価される)な値が混在している配列です。このような配列を受け取り、falsyな値を除外しながら各要素を連結し、1つの文字列として返すJavaScript関数を作成してみましょう。解決のアプローチこの問題は、Array.prototype.reduce()メソッドを使うことで簡潔に解決できます。reduce()は配列の各要素に対してコールバック関数を順番に実行し、その結果を1つの累積値にまとめるメソッドです。ポイントとなるのは、falsyな値を論理OR演算子(||)によって空文字列へ置き換える
-
【JavaScript】同じ先頭文字で始まる重複文字列を配列から削除する方法
本記事では、文字列の配列を受け取り、同じ文字で始まる文字列が複数存在する場合に、そのうち1つだけを残して残りをすべて削除するJavaScript関数の作成方法を解説します。例えば、次のような配列があるとします。const arr = [Apple, Jack, Army, Car, Jason];この配列を見ると、「Apple」と「Army」はどちらも「A」で始まり、「Jack」と「Jason」はどちらも「J」で始まっています。先頭文字ごとに1つの文字列のみを残したいので、ここでは「Army」と「Jason」を配列から取り除くことになります。実装例Mapオブジェクトを使用して、すでに登場した先
-
【JavaScript】和と積から2つの数のペアを見つける関数の作り方
問題の概要2つの数 m と n を引数として受け取り、和が n かつ 積が m となる2つの数を返す JavaScript 関数を作成します。条件を満たす組み合わせが存在しない場合は false を返す仕様とします。解法の考え方もっとも直感的なアプローチは線形探索(全探索)です。0 から和の半分までの整数 i を順に調べ、「i × (n − i)」が積 m と一致するかどうかを確認します。一致する i が見つかった時点で [i, n − i] を配列として返し、ループが完了しても見つからなければ false を返します。計算量は O(n) とシンプルですが、小〜中規模の入力であれば十分実用的で
-
JavaScriptで文字列内の隣接する単語を入れ替える方法
JavaScriptでは、文字列を受け取り、文字列の末尾に達するまで隣接する単語同士を入れ替えていく関数を求められることがあります。本記事では、split()とreduce()を組み合わせて、この処理を簡潔に実装する方法を解説します。実装例以下のコードは、与えられた文字列内の隣接する単語を順に入れ替える関数の実装例です。 { if(ind % 2 === 1){ return acc; } acc += ((arr[ind+1] || ) + + val + ); return acc; },
-
JavaScriptで配列内の数値の符号を反転させる方法
はじめに正の数と負の数が混在する配列を受け取り、正の数を対応する負の数へ、負の数を対応する正の数へ、元の配列を直接書き換える形で変換するJavaScript関数を作成する必要があります。これは、配列の各要素に -1 を掛けることで実現できます。以下では、forEach() メソッドを使った実装例を紹介します。コード例const arr = [12, 5, 3, -1, 54, -43, -2, 34, -1, 4, -4]; const changeSign = arr => { arr.forEach((el, ind) => {
-
JavaScriptで矩形数(Pronic Number)を判定する方法を解説
矩形数(Pronic Number)とは?矩形数(Pronic数)とは、2つの連続する整数の積として表せる数のことです。つまり、次のような形式で表される数値を指します。n(n + 1)具体例を挙げると、以下のような数が矩形数に該当します。0 = 0 × 16 = 2 × 312 = 3 × 420 = 4 × 530 = 5 × 6これらはすべて「ある整数 n と n+1 の掛け算」で表せるため、矩形数と呼ばれます。矩形数を判定するJavaScript関数ここでは、引数として受け取った数値が矩形数であれば true を、そうでなければ false を返すJavaScript関数を作成します。実
-
JavaScriptで2つの数値配列の差分(偏差)を見つける方法
はじめに本記事では、2つの数値配列を受け取り、どちらか片方にのみ存在する要素(共通しない要素)をすべて返すJavaScript関数の作成方法を解説します。これは「対称差(シンメトリックディファレンス)」と呼ばれる考え方で、配列同士を比較する際によく使われるテクニックです。問題の例たとえば、次のような2つの配列があったとします。const arr1 = [2, 4, 2, 4, 6, 4, 3]; const arr2 = [4, 2, 5, 12, 4, 1, 3, 34];この場合、期待される出力は次のようになります。const output = [6, 5, 12, 1, 34];両方の配