-
JavaScriptで配列を回転させる方法:追加メモリ不要の実装テクニック
JavaScriptで、配列と数値 n を受け取る関数を作成することを考えます。この関数は、配列を n 個ぶんだけ回転させるものです。つまり、先頭から n 個の要素を取り出し、それらを配列の末尾へ移動します。ただし、ここで求められる唯一の条件は、余分なメモリ領域を使用しないことです。具体例たとえば、入力配列が次のようになっているとします。const arr = [12, 6, 43, 5, 7, 2, 5];ここで n が 3 の場合、期待される出力は次のとおりです。const output = [5, 7, 2, 5, 12, 6, 43];先頭の「12」「6」「43」の3要素が末尾へ移動し
-
【JavaScript】falsyな値を持つオブジェクトを配列の末尾に移動してソートする方法
次のようなオブジェクトの配列があるとします。 const array = [ {key: a, value: false}, {key: a, value: 100}, {key: a, value: null}, {key: a, value: 23} ]; この配列に対して、「value」プロパティがfalsy(偽値)であるオブジェクトをすべて配列の末尾へ移動し、それ以外のオブジェクトは「value」プロパティの降順で並べ替えるJavaScript関数を作成する必要があります。 アプローチ:sort()メソッドとカスタム比較関数 この問題は、配列のsort(
-
JavaScriptで文字列がソート済みかどうかを判定する方法
本記事では、引数として受け取った文字列がソート済み(昇順または降順に整列された状態)であるかどうかを判定するJavaScript関数の実装方法を解説します。 期待する動作 作成する関数は、以下のように動作します。 isSorted(adefgjmxz); // true(アルファベット順=昇順) isSorted(zxmfdba); // true(逆アルファベット順=降順) isSorted(dsfdsfva); // false(昇順と降順が混在) 判定の考え方 文字列内の隣り合う2文字を取り出し、charCodeAt()で取得した文字コードを比較します。その差分が正であれば「
-
【JavaScript】文字列内のスラッシュ(/)をバックスラッシュに一括置換する方法
JavaScriptでは、スラッシュ(/)を含む可能性のある文字列を受け取り、すべてのスラッシュをバックスラッシュ(\)に置き換えた新しい文字列を返す関数を実装したいというケースがあります。例として、次のような文字列を考えてみます。const str = 'Th/s str/ng /conta/ns some/ forward slas/hes';この文字列に含まれるスラッシュを、すべてバックスラッシュへ変換していきましょう。実装例以下がそのコードです。const str = 'Th/s str/ng /conta/ns some/ forward slas/hes
-
JavaScriptで配列内のすべての素数の合計を求める方法
本記事では、数値の配列を受け取り、その中に含まれる素数のみを合計して返すJavaScript関数の作成方法を解説します。 問題の概要 与えられた配列の中から素数だけを取り出し、その合計値を計算する関数を実装します。 例として、次のような配列を考えてみましょう。 const arr = [43, 6, 6, 5, 54, 81, 71, 56, 8, 877, 4, 4]; この配列に含まれる素数は 43、5、71、877 の4つです。したがって、関数は以下の合計を返す必要があります。 43 + 5 + 71 + 877 = 996 実装コード 以下が実際のコード例です。まず素数かどうかを判定す
-
JavaScriptで配列から一意の値(一度だけ出現する要素)を抽出する方法
まず、次のように重複した要素を含む配列があると仮定しましょう。const arr = [1,1,2,2,3,4,4,5];ここで求められているのは、このような配列を引数として受け取り、元の配列内に一度だけ出現する要素のみを含む新しい配列を返すJavaScript関数を作成することです。なお、これは単純な重複削除とは異なります。重複削除では各値を1つ残しますが、今回は「1回しか登場しない値」だけを抜き出す点がポイントです。上記の例では 3 と 5 のみが該当します。コード例以下がその実装コードです。const arr = [1,1,2,2,3,4,4,5]; const extractUniqu
-
JavaScriptで配列を反転せずに要素の逆インデックスを取得する方法
はじめに本記事では、配列を実際に反転させることなく、指定した要素が「逆順の配列」の中でどのインデックス位置に該当するかを求める関数を、JavaScriptで実装する方法を解説します。要件の整理関数は、文字列または数値のリテラルを含む配列を第一引数として受け取り、検索対象の文字列または数値を第二引数として扱います。検索対象の値が配列内に存在しない場合は -1 を返します。値が存在する場合は、配列を逆順に並べ替えた場合にその要素が占めることになるインデックスを返します。ただし、実際に配列を反転してはいけません。最後に、この関数を Array.prototype オブジェクトにアタッチし、すべての配
-
【JavaScript】split()メソッドでキーと値を含む文字列から配列オブジェクトを作成する方法
はじめにJavaScriptでは、特定の形式で整形された文字列をデータ構造へ変換したい場面がよくあります。本記事では、キーとプロパティ値を含む特殊な文字列を、String.prototype.split()メソッドを活用してオブジェクトの配列へ変換する方法を解説します。前提となる入力データまず、次のような特殊な形式の文字列が与えられたと仮定しましょう。const str = Integer,1 Float,2.0\nBoolean,True Integer,6\nFloat,3.66 Boolean,False;この文字列を、以下のようなオブジェクトの配列へ変換することを目標とします。cons
-
【JavaScript】for...inループを使って最大出現回数の要素を求める方法
カンマ区切りの文字列に、次のように果物の名前が複数含まれているとします。const str = Banana,Banana,Pear,Orange,Apple,Melon,Grape,Apple,Banana,Grape,Melon,Grape,Melon,Apple,Grape,Banana,Orange,Melon,Orange,Banana,Banana,Orange,Pear,Grape,Orange,Orange,Apple,Apple,Banana;このような文字列を引数として受け取り、最も多く出現する果物名を特定する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];この場合、期待される出力は以下のとおりです。const output = [4, 2, 3, 1, 2, 6, 5, 8, 6, 9, 8, 4, 9, 3];ご覧のとおり、arr1 の1番目の要素、arr2 の1番目の要素、arr1 の2番目の要素、arr2
-
【JavaScript】配列内の重複した数値を1つの場所にまとめて合計する方法
今回は、数値の配列を受け取り、同じ値を持つ要素をすべて最初に出現した位置にまとめて合計するJavaScript関数を作成します。例えば、次のような入力配列があったとします。const arr = [20, 10, 15, 20, 15, 10];この場合、20が2つ、10が2つ、15が2つ存在するため、それぞれを合計すると、期待される出力は以下のようになります。const output = [40, 20, 30];実装の考え方この問題を解くためには、各要素について「自分自身と同じ値が配列内の他の場所にまだ残っているか」を確認し、あればその要素を現在の位置に加算して削除する、という処理を繰り返
-
JavaScriptでforループを使って階乗を計算する方法
本記事では、数値 n を引数として受け取り、for ループを使用してその階乗を計算して返す、シンプルな JavaScript 関数の実装方法を解説します。階乗とは階乗とは、1 からその数までのすべての整数を掛け合わせた値のことです。例えば、以下のような結果になります。factorial(5) = 120, factorial(6) = 720アルゴリズムの考え方結果を格納する変数とカウント用の変数を用意し、カウントの値を結果に掛け合わせながら、カウントが 1 に達するまで 1 ずつ減らしていきます。そして最後に、累積した結果を返します。処理の手順結果を格納する変数 res を 1 で初期化する
-
【JavaScript】配列内の最小値が複数あるとき、そのすべてのインデックスを取得する方法
次のような数値の配列があるとします。const arr = [1,2,3,4,1,7,8,9,1];この配列から最小値(上の例では「1」)のインデックスを1つだけ取得したいのであれば、Math.min と indexOf を組み合わせるだけで簡単に実現できます。const min = Math.min.apply(Math, arr); const ind = arr.indexOf(min);このコードを実行すると、ind には 0 が代入されます。確かに正しい結果です。しかし、配列内に最小値が複数存在する場合はどうでしょうか。上記の配列には「1」が3つ含まれています。このようなケースでは、
-
【JavaScript】オブジェクトのプロパティ値から最大値を持つキーと値を取得する方法
問題の概要 JavaScriptでは、オブジェクトに含まれるプロパティ値の中から最大値を特定し、対応するキーと値のペアを取得したい場面がよくあります。本記事では、その具体的な実装方法をわかりやすく解説します。 例として、ある施設の評価基準ごとのスコアを格納した次のようなオブジェクトを考えてみましょう。 const rating = { "overall": 92, "atmosphere": 93, "cleanliness": 94, &nb
-
JavaScriptでランダムなHEXカラーコードを生成する方法
JavaScriptで、関数を呼び出すたびにランダムに生成された16進数(HEX)形式のカラーコードを返す関数 randomColor を作成してみましょう。本記事では、Math.random() を活用したシンプルで実用的な実装例と、その仕組みについて詳しく解説します。 コード例 以下がその実装コードです。 const randomColor = () => { let color = #; for (let i = 0; i < 6; i++){ const random = Math.random(); const bit =
-
JavaScriptで配列からランダムに要素を選択する方法|重複なしでn個取り出す
はじめに:やりたいことJavaScriptでは、配列の中から重複しないようにランダムな要素を複数個選び出したい場面があります。くじ引き、シャッフル機能、クイズのランダム出題など、さまざまな用途で活用できるテクニックです。ここでは、次のような重複を含まない数値の配列を例に考えてみます。const arr = [2, 5, 4, 45, 32, 46, 78, 87, 98, 56, 23, 12];求められる要件は以下のとおりです。一意なリテラルを含む配列と、取得する個数 n を受け取る関数を作成する入力配列からランダムに n 個の要素を選び、配列として返す出力配列内に同じ要素が2回以上現れない
-
【JavaScript入門】配列をキーと値のペアのオブジェクトに変換する方法
JavaScriptでは、オブジェクトの配列をキーと値のペアを持つ1つのオブジェクトへ変換したい場面がよくあります。本記事では、次のような「名前(name)」と「スコア(score)」を含む配列を例に、具体的な変換方法を解説します。const arr = [ { name: Rahul, score: 89 }, { name: Vivek, score: 88 }, { name: Rakesh, score: 75 }, { name: Sourav, score: 82 }, { name: Gautam, score: 91 }, { name: Sunil,
-
【JavaScript】オブジェクト配列の重複をプロパティで削除する方法
JavaScriptでオブジェクトの配列を扱う際、特定のプロパティが重複している要素を取り除きたいケースはよくあります。本記事では、name プロパティの値が重複するオブジェクトを配列から除外する実装方法を解説します。 問題の概要 まず、次のようなオブジェクトの配列があるとします。 const arr = [ {name: Jack, age: 14}, {name: bob, age: 14}, {name: sue, age: 21}, {name: Jill, age: 16}, {name: Jack, age: 21} ]; この配列に対して、name の値が重複
-
JavaScriptでキー配列と値配列の2つの配列からMapを構築する方法
JavaScriptでは、キーを格納した配列と値を格納した配列の2つが与えられ、それらを組み合わせてマップ(Map)を構築したい場面があります。本記事では、その具体的な実装方法を解説します。前提となるデータまず、以下のような2つの配列があるとします。const keys = [0, 4, 2, 3, 1]; const values = [first, second, third, fourth, fifth];ここで必要なのは、keys配列とvalues配列を引数として受け取り、各値を対応するキーに関連付ける関数を作成することです。期待される出力は以下のようになります。const map =
-
JavaScriptで配列から指定した数値以上の要素を抽出する方法
JavaScriptでは、数値の配列の中から特定の条件を満たす要素だけを取り出したい場面がよくあります。本記事では、第一引数に数値の配列、第二引数に基準となる数値を受け取り、その数値以上の要素だけを含む新しい配列を返す関数の作り方を解説します。実装コード以下は、forループを使って条件を満たす要素を集めるシンプルな実装例です。 { const res = []; for(let i = 0; i < arr.length; i++){ if(arr[i] < num){ continue; }; res.p