-
JavaScriptでflagがfalseの要素を配列の先頭に並べ替える方法
次のようなオブジェクトの配列があると仮定しましょう。const arr = [ {flag: true, other: 1}, {flag: true, other: 2}, {flag: false, other: 3}, {flag: true, other: 4}, {flag: true, other: 5}, &
-
JavaScriptで配列内のすべての数値を割り切れる最小の共通約数を見つける方法
はじめに 本記事では、数値の配列を受け取り、その配列内のすべての数値を余りなく(ちょうど)割り切れる数を返すJavaScript関数の作成方法を解説します。 このような「共通の約数」を見つける処理は、配列操作メソッドの使い方を学ぶうえでとても良い題材です。ここでは、各数値の約数を個別に求め、それらの積集合を取ることで、すべての要素に共通する約数を導き出します。 実装コード 以下が実際のコードです。 const arr = [4, 6, 34, 76, 78, 44, 34, 26, 88, 76, 42]; // 各数値の約数(1と自身を除く)を配列で返す関数 const dividesA
-
JavaScriptで数値の小数点以下の桁数を取得する方法
概要本記事では、整数または浮動小数点数を受け取るJavaScript関数の作成方法を解説します。引数が浮動小数点数の場合は小数点以下の桁数を返し、整数の場合は0を返します。実装の考え方最もシンプルで確実な方法は、数値を一度文字列に変換し、小数点(.)が含まれているかどうかを判定するアプローチです。具体的な手順は以下のとおりです。String()を使って数値を文字列に変換するincludes()で小数点が含まれているかを確認する含まれていればsplit(.)で分割し、小数点以下の文字数を返す含まれていなければ0を返すコード例const num1 = 1.123456789;const num2
-
JavaScriptで文字列をアルファベット順の数字に変換・マッピングする方法
問題の概要JavaScriptで、文字列を引数として受け取り、その文字列に含まれる各アルファベットを対応する番号に変換して出力する関数を作成する必要があります。アルファベットと番号の対応a = 1 b = 2 c = 3 d = 4 e = 5 . . . y = 25 z = 26注意:特殊文字や空白は処理から除外します。入出力例たとえば、入力が次の場合 −hello man出力は以下のようになります −8,5,12,12,15,13,1,14実装コードこの問題を解決するコードは次のとおりです −const str = hello man; const charPosition = str
-
【JavaScript入門】Math.sqrt()を使わずに平方根を計算する方法
はじめに本記事では、JavaScriptにおいて Math.sqrt() 関数を使用せずに、数値の平方根を計算する関数を実装する方法を解説します。平方根の計算は通常 Math.sqrt() を使えば一瞬ですが、アルゴリズムの学習や面接対策として「自力で実装する」ことは非常に良い練習になります。ここでは二分探索(バイナリサーチ)の考え方を応用して実装していきます。実装コードそれでは、実際のコードを見てみましょう。const square = (n, i, j) => { let mid = (i + j) / 2; let mul = m
-
JavaScriptで数値文字列の先頭ゼロを空白に置き換える方法
JavaScriptで、数値を表す文字列を受け取り、先頭のゼロを空白(半角スペース)に置き換える関数を作成する方法を解説します。このとき、数値の前にすでに存在する空白はそのまま保持する必要があります。 要件の確認 例えば、次のような文字列が与えられたとします。 004590808 この場合、期待される出力は以下の通りです。 4590808 先頭に連続する「0」が、同じ文字数の半角スペースに置き換えられます。それ以外の部分はそのまま維持され、元の文字列の先頭に空白がある場合も、その空白は保持されます。 実装例 この処理を実現するコードは以下の通りです。 const str = 00459080
-
JavaScriptで2つの配列を組み合わせてオブジェクト配列(JSON)に変換する方法
JavaScriptでは、キーとなる配列と値となる配列の2つを組み合わせて、1つのオブジェクト配列(JSON形式)を作成したいケースがよくあります。例えば、アンケートの選択肢とその真偽値を対応付けるような場面です。 変換元のデータ まず、次のような2つの配列があったとします。 const options = [A, B, C, D]; const values = [true, false, false, false]; この2つの配列から、以下のように各要素をペアにした新しいオブジェクトの配列を生成して返す関数が必要です。 const response = [ {opt: A, va
-
JavaScriptで別の配列を基にオブジェクト配列をその場でフィルタリングする方法
ここでは、次のようなオブジェクトの配列と、名前を格納した文字列配列があると仮定します。 オブジェクトの配列: const main = [ {name: Karan, age: 34}, {name: Aayush, age: 24}, {name: Ameesh, age: 23}, {name: Joy, age: 33}, {name: Siddarth, age: 43}, {name: Nakul, age: 31}, {name: Anmol, age: 21}, ]; 名前の配列: const names = [Karan,
-
JavaScriptでJSONオブジェクトからプロパティを削除する方法【delete演算子の使い方】
はじめに例として、次のようなオブジェクトを作成したとします。const myObject = { ircEvent: PRIVMSG, method: newURI, regex: ^https://.* };このオブジェクトから regex プロパティを削除し、以下のように myObject を更新することを目標としましょう。const myObject = { ircEvent: PRIVMSG, method: newURI };delete 演算子を使ったプロパティの削除オブジェクトからプロパティを削除するには、JavaScript の delete 演算子を使用し
-
JavaScriptでオブジェクト(JSON)のサイズ=プロパティ数を取得する最良の方法
JavaScriptでは、配列と異なりオブジェクトには length プロパティが存在しません。そのため、オブジェクトのサイズ(プロパティの総数)を知りたい場合は、自前でカウントする処理を用意する必要があります。 対象となるオブジェクトの例 まず、次のようなオブジェクトがあるとします。 const obj = { name: "Ramesh", age: 34, occupation: "HR Manager",
-
JavaScriptでカタツムリトレイル問題を解く:正方行列を螺旋状に走査する方法
次のような配列があるとしましょう。 const arr = [ [1, 2, 3, 4], [12,13,14,5], [11,16,15,6], [10,9, 8, 7] ]; この配列は必ず正方行列(行数と列数が等しい行列)になるとします。 問題の概要 求められているのは、この配列を受け取り、要素を外側から内側へと渦巻き状にたどりながら、中心へ収束するように新しい配列を構築するJavaScript関数
-
JavaScriptで2つの配列の要素を交互にマージする方法
問題の概要今回は、2つの配列を受け取り、それぞれの配列から交互に要素を取り出して1つの配列へマージするJavaScript関数を作成する必要があります。例たとえば、次のような2つの配列があるとします。const arr1 = [4, 3, 2, 5, 6, 8, 9];const arr2 = [2, 1, 6, 8, 9, 4, 3];この場合、期待される出力は以下のようになります。arr1とarr2の要素が1つずつ交互に並んでいる点に注目してください。const output = [4, 2, 3, 1, 2, 6, 5, 8, 6, 9, 8, 4, 9, 3];実装コードこの関数を実装
-
JavaScriptで配列内の同一要素を1つのインデックスにまとめて合計する方法
問題概要今回は、数値の配列を受け取り、同じ値を持つすべての要素を1つのインデックスに集約して合計するJavaScript関数を作成します。例入力配列が以下の場合を考えてみましょう。const arr = [20, 10, 15, 20, 15, 10];この場合、期待される出力は次のとおりです。const output = [40, 20, 30];ご覧のとおり、重複していた 20 は 40 に、15 は 30 に、10 は 20 にと、それぞれ1か所にまとめられて合計されています。元の配列における出現順序は維持されます。実装コードlastIndexOf() と splice() を組み合わせ
-
JavaScriptで文字列配列の中から最も短い要素を見つける方法
この記事では、文字列の配列を受け取り、その中から最も短い(文字数が最小の)文字列を見つけて返すJavaScript関数の作り方を解説します。 実装のアプローチとしては、配列を一度だけ走査しながら、現時点で見つかっている最短文字列のインデックスと長さを保持していく方法がシンプルで効率的です。ここでは reduce メソッドを活用し、この処理を簡潔に記述してみましょう。 コード例 実際のコードは以下の通りです。 const arr = [this, can, be, some, random, sentence]; const findSmallest = arr => {
-
JSONオブジェクトの値をJavaScriptの配列に変換する方法
JavaScriptでは、オブジェクトが持つすべてのプロパティの値を取り出し、1つの配列としてまとめたい場面があります。例えば、以下のようなユーザー情報を格納したオブジェクトを考えてみましょう。{ "firstName": "John", "lastName": "Smith", "isAlive": "true", "age": "25" }このオブジェクトから、プロパティの値だけを抜き出した次のような
-
JavaScriptで数値の各桁の合計を求め、それ以上の最も近い素数を見つける方法
本記事では、JavaScriptを使って「与えられた数値の各桁を合計し、その合計以上で最も近い素数を返す関数」を実装する方法を解説します。例えば、56563という数値が与えられた場合、各桁の合計は 5 + 6 + 5 + 6 + 3 = 25 となります。25は素数ではないため、25以上で最も近い素数である 29 を返すことになります。実装コードこの処理は、以下の3つの関数に分けて実装すると分かりやすくなります。digitSum:再帰呼び出しを使って各桁の合計を計算するisPrime:ある数値が素数かどうかを判定するnearestPrime:合計値から順に素数が見つかるまで探索する {
-
JavaScriptで複数の配列から共通の要素を取得する方法
JavaScriptでは、任意の個数の配列を受け取り、すべての配列に共通して含まれる要素だけを抽出した配列を返す関数が必要になることがあります。共通する要素がひとつも存在しない場合は、空の配列を返すようにします。本記事では、この「複数配列の共通要素(積集合)」を求める関数を段階的に実装していきます。実装の考え方基本的なアプローチは以下のとおりです。まず、2つの配列を受け取って共通要素を返す intersection 関数を作成します。片方の配列をループで走査し、その要素がもう片方の配列に includes() メソッドで含まれているかどうかを判定し、含まれていれば結果用の配列へ追加します。次に
-
JavaScriptで数値の各桁の合計を一桁になるまで再帰的に計算する方法
JavaScriptでは、数値の各桁を合計し、その結果が一桁になるまで再帰的に処理を繰り返す関数が必要となる場面があります。このような操作は「デジタルルート」とも呼ばれ、チェックデジットの計算や数値の性質を調べる際などに役立ちます。 要件 今回実装する関数には、以下の条件があります。 数値の各桁の合計を求める 結果が一桁になるまで合計処理を繰り返す 数値を文字列やその他のデータ型に変換せずに実装する 文字列変換を使わないため、算術演算だけで各桁を取り出していくのがポイントです。 実装例 それでは、実際のコードを見てみましょう。 const num = 546767643; const su
-
【JavaScript】配列内の3桁の整数を先頭に移動させる方法
はじめに 今回は、数値の配列を受け取り、その中から3桁の整数(100〜999)をすべて配列の先頭に移動させるJavaScript関数を実装します。ポイントは、元の配列内での相対的な並び順をできる限り保ちながら、3桁の数値だけを手前に集めることです。 対象となる配列は次のとおりです。 const numList = [1, 324, 34, 3434, 304, 2929, 23, 444]; この配列の場合、「324」「304」「444」の3つの3桁整数が先頭に移動することになります。それでは、実際のコードを見ていきましょう。 サンプルコード const numList = [1, 324,
-
JavaScriptで数値の各桁を2乗して連結する方法
JavaScriptで数値の各桁を2乗して連結する関数を作る今回は、数値を受け取り、その各桁を2乗した結果を連結した新しい数値を返すJavaScript関数を作成します。例えば、入力が次の数値だったとします。99この場合、期待される出力は次のとおりです。8181これは、9の2乗が「81」であり、2桁目の9も同様に「81」になるためです。つまり「81」と「81」を連結して「8181」という結果が得られます。それでは、この関数のコードを書いていきましょう。コード例実装コードは以下のとおりです。const num = 9119;const squared = num => { &n