-
JavaScriptで2つの文字列の相違点(不一致文字数)をカウントする方法
はじめに 本記事では、2つの文字列を受け取り、対応する位置の文字が異なる箇所の数を求めるJavaScript関数を作成します。対応する文字同士が一致していない場合、その箇所を「相違点」としてカウントする仕組みです。 比較対象となる文字列の例 今回は、以下の2つの文字列を比較してみます。 const str1 = Hello world!!!; const str2 = Hellp world111; 一見よく似ていますが、よく見ると5文字目が「o」と「p」で異なり、さらに末尾の3文字も「!!!」と「111」で異なっています。つまり、相違点は合計4箇所あることになります。 サンプルコード
-
JavaScriptで特定の範囲のアームストロング数を見つける方法
アームストロング数とは? アームストロング数(Armstrong Number)とは、各桁の数字を桁数乗した値の総和が、元の数と一致する特別な数のことです。 数学的に表現すると、次の式が成り立ちます。 xy…z = xn + yn + … + zn ここで n はその数の桁数を表します。 具体例:153の場合 153は3桁の数なので、各桁の数字を3乗して合計すると元の数に戻ります。 1³ + 5³ + 3³ = 1 + 125 + 27 = 153 この性質を満たしているため、153はアームストロング数だといえます。 実装する内容 今回は、2つの数値(下限と上限)を受け取り、その範囲に含まれる
-
【JavaScript】配列から重複している値だけを抽出して1回ずつ表示する方法
問題の概要JavaScriptでは、重複した値を含む配列から「複数回出現している要素だけ」を取り出し、それぞれ1回ずつ表示したいケースがあります。例えば、次のような数値の配列を考えてみましょう。const arr = [1, 4, 3, 3, 1, 3, 2, 4, 2, 1, 4, 4];この配列には、1・4・3・2がそれぞれ複数回出現しています。そこで、重複している値のみを抽出し、結果として1回ずつ返す関数を作成します。上記の配列に対する期待される出力は次のとおりです。const output = [1, 4, 3, 2];実装例以下のコードでは、indexOf() と lastIndex
-
JavaScriptで2次元配列(行列)を転置する方法
JavaScriptで2次元配列(行列)を扱う際、行と列を入れ替える「転置(Transpose)」という操作が必要になることがあります。この記事では、行列の転置の基本的な考え方と、JavaScriptでの実装方法をわかりやすく解説します。 転置(Transpose)とは? 行列(2次元配列)の転置とは、元の行列の行と列を入れ替えたものを指します。具体的には、元の行列の1行目が転置後の1列目になり、2行目が2列目になる、というように変換されます。 例えば、次のような3×3の行列があるとします。 const arr = [ [1, 1, 1], [2, 2, 2], [3,
-
JavaScriptで2つの2次元配列が等しいかどうかを判定する方法
本記事では、2つの2次元配列(配列の中に配列が入った構造)を受け取り、両者が等しいかどうかを真偽値(boolean)で返すJavaScript関数の作成方法を解説します。2次元配列が「等しい」とは?ここでは、次の2つの条件を満たす場合に「等しい」と判断します。両方の配列が同じ行数・列数を持っていることすべての行インデックス i と列インデックス j について、arr1[i][j] === arr2[i][j] が true になることつまり、対応するすべての要素が完全に一致して初めて「等しい」とみなされ、1つでも異なる要素が存在すれば false を返します。実装例実際のコードは次のとおりです
-
JavaScriptで文字列に含まれる特殊文字の出現回数を数える方法
問題の概要たとえば、次のような特殊文字(記号)が含まれている可能性のある文字列を考えてみましょう。! , , , , ; , \ , . , - , ?ここでの課題は、文字列を引数として受け取り、その文字列の中にこれらの特殊文字が何回出現するかを数え、その合計数を返すJavaScript関数を記述することです。実装コードこの処理を実現するコードは次のとおりです。 { const punct = !,\\;.-?; let count = 0; for(let i = 0; i < str.length; i++){ if(!punct.includes
-
JavaScriptのクイックソートで数値配列をソートする方法
本記事では、数値の配列を受け取り、クイックソート(Quick Sort)アルゴリズムを使って昇順に並べ替えるJavaScript関数の実装方法を解説します。 クイックソートとは クイックソートは、代表的な「分割統治法(Divide and Conquer)」に基づくソートアルゴリズムです。各パスごとにピボット(pivot)と呼ばれる基準値を1つ選び、ピボットより小さい要素をすべて左側へ、大きい要素をすべて右側へ移動させます。この操作を再帰的に繰り返すことで、配列全体を効率よく並べ替えます。 平均計算量は O(n log n) と高速であり、大規模なデータのソートにも適しています。 実装コード
-
JavaScriptで文字列から空白を削除する方法
JavaScriptでは、文字列からすべての空白(ホワイトスペース)を取り除いた新しい文字列を返す関数が必要になる場面があります。本記事では、その実装方法をいくつかのアプローチとともに解説します。forループを使った基本的な実装まずは、文字列を1文字ずつ確認し、空白でない文字だけを連結していくシンプルな方法です。 { let newStr = ; for (let i = 0; i < str.length; i++) { if (str[i] !== ) { newStr += str[i]; } }
-
JavaScriptで数値の素因数を配列として取得する方法
本記事では、数値を受け取り、その数値を割り切るすべての素数(素因数)を配列として返すJavaScript関数の作成方法を解説します。 例えば、入力された数値が105の場合、出力は次のようになります。 const output = [3, 5, 7]; コード例 実際のコードは以下のとおりです。 const num = 105; const isPrime = (n) => { for(let i = 2; i <= n/2; i++){ i
-
JavaScriptで文字列の大文字・小文字を反転させる方法
JavaScriptでは、文字列を受け取り、元の文字列に含まれる大文字をすべて小文字へ、小文字をすべて大文字へ変換した新しい文字列を生成する関数を実装する必要がある場面があります。入力例と期待される出力たとえば、次のような文字列が与えられたとします。const str = The Case OF tHis StrinG Will Be FLiPped;このとき、期待される出力は以下のとおりです。const output = tHE cASE of ThIS sTRINg wILL bE flIpPED;実装例:文字コードを利用する方法大文字と小文字のASCIIコードの差は32であることを利用す
-
JavaScriptで実装する行列乗算アルゴリズムの完全ガイド
はじめに本記事では、2つの2次元数値配列(行列)を受け取り、その行列乗算の結果を返すJavaScript関数を実装していきます。行列乗算の基本ルール行列AがX行Z列、行列BがZ行Y列である場合、乗算結果はX行Y列の行列になります。したがって、最初の行列の列数と2番目の行列の行数は必ず一致している必要があり、一致しない場合は計算できません。実装コード以下が実際のコードです。const multiplyMatrices = (a, b) => { if (!Array.isArray(a) || !Array.isArray(b) || !a.l
-
JavaScriptで2つの文字列のASCIIコード合計の差分を計算する方法
ASCIIコードとはASCII(アスキー)は7ビットの文字コード体系で、各ビットパターンがそれぞれ一意の文字に対応しています。英字アルファベットのすべての文字には、固有の10進数のASCIIコードが割り当てられています。今回は、2つの文字列を受け取り、それぞれのASCIIスコア(文字列内の各文字のASCIIコード10進数値の合計)を計算し、その差を返す関数を作成します。実装の考え方処理の流れは以下の通りです。split()で文字列を1文字ずつ配列に分解するreduce()を使って各文字のcharCodeAt(0)(ASCIIコード)を合計する2つの文字列のスコアの差をMath.abs()で絶対
-
JavaScriptで多次元配列を文字列に変換する方法
JavaScriptでは、入れ子になった配列(ネストされた多次元配列)に含まれるすべての値を連結し、1つの文字列へ変換する関数が必要になる場面があります。本記事では、各要素の末尾に半角スペースを付けながら文字列を組み立てる方法を解説します。 実装のポイント Array.isArray() を使って、要素が配列かどうかを判定する 配列だった場合は、自分自身を再帰的に呼び出して中身を処理する 各要素の後にスペースを追加して連結する コード例 実際のコードは以下の通りです。 const arr = [ this, [ is, an, [ examp
-
【初心者向け】JavaScriptでオブジェクトをMap(マップ)に変換する方法を徹底解説
JavaScriptでは、キーと値のペアを持つ通常のオブジェクトを、Mapオブジェクトに変換したい場面があります。Mapは任意の型をキーとして扱え、要素の追加・削除や反復処理にも優れているため、データ構造の用途によってはオブジェクトよりも便利です。本記事では、オブジェクトをMapへ変換する具体的な方法をサンプルコード付きで解説します。 変換対象となるオブジェクト 例として、次のような人物情報を格納したオブジェクトを想定します。 const obj = { name: Jai, age: 32,
-
JavaScriptで配列の交互乗算和を計算する方法
JavaScriptで配列の交互乗算和を計算する方法本記事では、数値の配列を受け取り、隣り合う要素をペアごとに掛け合わせた値を合計した「交互乗算和」を返すJavaScript関数の作成方法を解説します。例えば、以下のような配列があるとします。const arr = [1, 2, 3, 4, 5, 6, 7];この場合、出力は次のように計算されます。1*2 + 3*4 + 5*6 + 7= 2 + 12 + 30 + 7= 51つまり、期待される最終的な出力は 51 となります。それでは、この関数を実際に実装してみましょう。実装例コードは以下の通りです。const arr = [1, 2, 3,
-
JavaScriptで文字列内のすべての数字を抽出して合計する方法
問題の概要JavaScriptで、英字や記号などが混在する文字列を受け取り、その中に含まれる1桁の数字をすべて合計して返す関数を作成することを考えます。たとえば「uyyudfgdfgf5jgdfj3hbj4...」のような文字列が与えられた場合、関数は文字列中に出現する数字(5, 3, 4...)だけを拾い出し、それらの総和を計算して返す必要があります。実装例const str = uyyudfgdfgf5jgdfj3hbj4hbj3jbb4bbjj3jb5bjjb5bj3;const sumNum = str => { const strA
-
JavaScriptで数値内の最大の桁差を求める方法
本記事では、数値を受け取り、その数値を構成する任意の2つの桁の間に存在する最大の差を返すJavaScript関数の作成方法を解説します。 言い換えれば、この関数は「数値の中で最も大きい桁」と「最も小さい桁」の差を単純に返すものです。 例 数値が 654646 の場合、 最も小さい桁は 4、最も大きい桁は 6 です。 したがって、出力は 2 となります。 実装コード この問題を解くコードは以下の通りです。 const num = 654646; const maxDifference = (num, min = Infinity, max = -Infinity) => { if(
-
JavaScriptで2つの配列をマージして重複を削除する方法
JavaScriptでは、2つの配列を結合しつつ、重複する要素を取り除いた新しい配列を作成したいケースがよくあります。本記事では、その実装方法を具体的なコード例とともに解説します。 問題の定義 次のような2つの配列があると仮定します。 const arr1 = [2, 4, 5, 3, 7, 8, 9]; const arr2 = [1, 4, 5, 2, 3, 7, 6]; この2つの配列を引数として受け取り、重複する要素を排除した(各要素が1回だけ出現する)新しい配列を返すJavaScript関数を作成する必要があります。 実装例:ループ処理を使った方法 まずは、基本的なループ処理を使った
-
【JavaScript】配列が回文(パリンドローム)かどうかを判定する方法
JavaScriptでは、リテラル値を含む配列を受け取り、その要素が前から読んでも後ろから読んでも同じであるかどうかを判定する関数を書くことができます。このような配列は「回文配列(パリンドローム配列)」と呼ばれます。回文配列の具体例は以下の通りです。const arr1 = [a, b, c, b, a]; const arr2 = [4, 7, 7, 4]; const arr3 = [7, 7, 7, 7, 7, 7];いずれの配列も、先頭から順に読んだ場合と末尾から逆に読んだ場合で、要素の並びが完全に一致しています。回文判定の実装例以下のコードは、配列の中央位置までループし、対称的な位置
-
JavaScriptで数値をk個の要素に分割した配列を生成する方法
本記事では、2つの数値(合計値 m と 配列の長さ k)を受け取り、「要素の合計が m になる長さ k の配列」を返すJavaScript関数の実装方法を解説します。 考え方:均等に分割する 最もシンプルなアプローチは、合計値を要素数で割った値(sum / len)をすべての要素に格納する方法です。これにより、各要素が等しい値となり、その合計は必ず元の数値と一致します。 サンプルコード 実際のコードは以下の通りです。 { const res = []; for (let i = 0; i < len; i++) { res.push(sum / len)