-
JavaScriptでsort()を使わずにreduce()だけで配列を並べ替える方法
JavaScriptでは通常、配列の並べ替えにはArray.prototype.sort()メソッドを使います。しかし、学習目的や特定の要件がある場合など、sort()を使用せずに配列をソートしたいケースもあります。本記事では、Array.prototype.reduce()メソッドを活用して、数値の配列を並べ替える関数を実装します。考え方は「挿入ソート」に近く、元の配列から要素を1つずつ取り出しながら、累積結果(アキュムレータ)の中で正しい位置へ挿入していくというものです。実装例それでは、実際のコードを見てみましょう。 { // 挿入すべき位置を決める let ind = 0
-
【JavaScript】オブジェクトの配列を1つのオブジェクトに変換する方法
オブジェクトの配列を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, score: 79}, ];この配列を受け取
-
JavaScriptでキー配列と値配列を受け取り、値を対応するキーにマッピングしたMapを作成する方法
問題の概要 次のような2つの配列があると仮定します。 const keys = [0, 4, 2, 3, 1]; const values = [first, second, third, fourth, fifth]; ここで求められているのは、このキーの配列と値の配列を引数として受け取り、各値を対応するキーに関連付けたMapオブジェクトを生成して返すJavaScript関数を作成することです。 期待される出力イメージは以下の通りです。 Map(5) { 0 => first, 4 => second, 2 => third, 3 => fourth,
-
JavaScriptで配列から指定した値以上の要素を抽出する方法
はじめにJavaScriptでは、数値の配列を第1引数として受け取り、単一の数値を第2引数として受け取る関数を作成する場面があります。この関数の役割は、入力配列の中から第2引数で指定した数値以上の要素だけを集め、それらを新しい配列として返すことです。例えば、しきい値(threshold)を40と指定した場合、戻り値には元の配列のうち「40以上」の値のみが含まれることになります。実装例:forループを使った基本的な書き方まずは、forループを使って条件に合う要素を順番に判定していく、最も基本的な実装方法を見てみましょう。const arr = [56, 34, 2, 7, 76, 4, 45,
-
JavaScriptで文字列内の母音と子音を数える方法
JavaScriptで母音と子音の数をカウントするこの記事では、英語のアルファベットを含む文字列を受け取り、その中に含まれる母音(vowels)と子音(consonants)の数をオブジェクトとして返すJavaScript関数の作成方法を解説します。実装のポイントは以下の通りです。文字列を1文字ずつ分解して処理する大文字・小文字を区別せずに判定するアルファベット以外の記号や空白はカウント対象から除外するそれでは、実際のコードを見ていきましょう。サンプルコード { const legend = aeiou; let { vowels, consonants } =
-
JavaScriptでfalsy値を持つオブジェクトを配列の末尾に移動して降順ソートする方法
課題 次のようなオブジェクトの配列があるとします。 const array = [ {key: a, value: false}, {key: a, value: 100}, {key: a, value: null}, {key: a, value: 23} ]; ここで求められているのは、このような配列を受け取り、「value」プロパティがfalsy(false・null・undefined・空文字列など)であるオブジェクトをすべて配列の末尾に移動し、それ以外のオブジェクトを「value」プロパティの降順に並べ替えるJavaScriptの関数を作成することで
-
JavaScriptで文字列がソート済みかどうかを判定する方法
本記事では、文字列を受け取り、その文字列がソート済み(昇順または降順)であるかどうかを判定するJavaScript関数の作成方法を解説します。 要件の確認 作成する関数は、引数として文字列を受け取り、その文字がコードポイント順に整列しているかどうかを返します。昇順・降順のどちらか一方に統一されていれば「ソート済み」とみなします。 isSorted(adefgjmxz) // true(昇順) isSorted(zxmfdba) // true(降順) isSorted(dsfdsfva) // false(整列していない) 実装例 それでは、実際のコードを見ていきましょう。 const
-
【JavaScript】文字列内のスラッシュ(/)をバックスラッシュ(\)に反転・置換する方法
JavaScriptでは、スラッシュ(/)を含む文字列を受け取り、すべてのスラッシュをバックスラッシュ(\)に置き換えた新しい文字列を返す関数が必要になる場面があります。たとえば、Unix系のパス区切り文字をWindows形式に変換したい場合などが典型例です。 この記事では、forループを使った基本的な実装方法と、replace()メソッドを使ったより簡潔な方法の2通りを解説します。 forループを使った基本的な実装 まずは、文字列を1文字ずつ走査しながら新しい文字列を組み立てる、最も基本的なアプローチです。 { let res = ; &n
-
JavaScriptで配列内の素数だけを合計する方法
本記事では、数値の配列を受け取り、その中に含まれる素数のみの合計を返すJavaScript関数の作成方法について解説します。 実装の方針 この処理を実現するためには、次の2つの関数が必要になります。 isPrime関数: 与えられた数が素数かどうかを判定するヘルパー関数 primeSum関数: 配列の各要素を走査し、素数だけを合計する本体の関数 コード例 実際のコードは以下の通りです。 const arr = [43, 6, 6, 5, 54, 81, 71, 56, 8, 877, 4, 4]; const isPrime = n => { if (n
-
JavaScriptで配列から一意(ユニーク)な要素だけを抽出する方法
JavaScriptでは、重複した要素を含む配列から「1回だけ出現する要素」を取り出したいケースがあります。例えば、次のような配列を考えてみましょう。const arr = [1,1,2,2,3,4,4,5];この配列には「1」「2」「4」がそれぞれ2回含まれています。ここで求められているのは、元の配列内に一度しか現れない要素だけを集めた新しい配列を返す関数です。上記の例であれば、結果として [3, 5] が得られます。それでは、実際にコードを見ていきましょう。実装例 { const res = []; for(let i = 0; i < arr.length; i++){
-
JavaScriptで文字列を配列に変換する方法|split()メソッドの実践的な使い方
はじめにJavaScriptでは、特定の形式を持つ文字列をオブジェクトの配列へ変換したい場面がよくあります。本記事では、String.prototype.split()メソッドを活用して、構造化された文字列を配列に変換する方法を具体的なコード例とともに解説します。変換対象の文字列まず、次のような特殊な形式の文字列を想定します。const str = Integer,1 Float,2.0\nBoolean,True Integer,6\nFloat,3.66 Boolean,False;この文字列を、split()メソッドを使って以下のような配列構造へ変換することを目標とします。const a
-
JavaScriptでオブジェクト配列の共通キーの値を合計して1つのオブジェクトにまとめる方法
JavaScriptでは、複数のオブジェクトを含む配列から、キーごとに値を集計したい場面がよくあります。本記事では、オブジェクトの配列内に存在するすべての一意なキーを抽出し、それぞれの値の累積合計を持つオブジェクトを返す関数の実装方法を解説します。 前提となるデータ構造 まず、次のようなオブジェクトの配列を想定します。 const arr = [{a: 2, b: 5, c: 6}, {a:3, b: 4, d:1},{a: 1, d: 2}]; 各オブジェクト内部では、同じキーが重複することはありません(それが有効なオブジェクトの条件だからです)。しかし、配列内の異なるオブジェクト同士は、
-
JavaScriptで配列の一意な要素のみを合計する方法
JavaScriptでは、重複した数値が含まれる可能性のある数値の配列を受け取り、一意な要素(配列内に一度だけ出現する要素)のみを合計して返す関数が必要になることがあります。本記事では、その実装方法をわかりやすく解説します。具体例入力配列が次の場合を考えてみましょう。const arr = [2, 5, 5, 3, 2, 7, 4, 9, 9, 11];この配列の中で一度だけ出現する要素は「3」「7」「4」「11」です。これらの合計は25となるため、期待される出力は25になります。アプローチ: forループで重複を判定する最もシンプルな方法は、forループで配列を反復処理しながら、各要素の出現
-
JavaScriptで数字文字列から各数字の出現回数を持つオブジェクトを作成する方法
はじめに JavaScriptでは、数字のみで構成された文字列から「それぞれの数字が何回出現したか」を集計したオブジェクトを作りたい場面があります。本記事では、そのような処理をシンプルなコードで実装する方法を解説します。 問題設定 例として、次のような数字の文字列を考えてみましょう。 const str = 11222233344444445666; この文字列を受け取り、各数字の出現回数を表すオブジェクトを返す関数を作成します。期待される出力は以下のとおりです。 const output = { 1: 2, 2: 4, 3: 3, 4: 7, 5: 1, 6: 3
-
JavaScriptで指定範囲内の乱数をn個生成する方法
JavaScriptでは、数値 n と、範囲(最小値・最大値)を表す2つの数値からなる配列を受け取り、その範囲内に収まる n 個のランダムな値を配列として返す関数が必要になる場面があります。 本記事では、Math.random() を活用してこのような関数を実装する方法を、実際のコード例とともにわかりやすく解説します。 実装コード まずは完成版のコードを見てみましょう。 { const res = []; for(let i = 0; i < num; ){ const random = randomBetween(range[0], range[1]
-
JavaScriptで2つの数値配列の対応する要素の絶対差を求める方法
はじめに JavaScriptでは、次のような2つの配列が与えられたとします。 const arr1 = [1,2,3,4,5,6]; const arr2 = [9,8,7,5,8,3]; ここで求めたいのは、これらの配列の対応する位置にある要素同士の差(絶対値)を計算し、その結果を新しい配列として返す関数です。 上記の配列の場合、期待される出力は以下のようになります。 const output = [8,6,4,1,3,3]; 実装のアプローチ この問題は、forループで各要素を順番に取り出し、Math.abs() メソッドで差の絶対値を求めながら新しい配列へ追加していき、最後にその配列を
-
【JavaScript】1つ目の配列の要素順に従って2つ目の配列をソートする方法
はじめに 以下のような2つの配列があるとします。 const arr1 = [d,a,b,c]; const arr2 = [{a:1},{c:3},{d:4},{b:2}]; 今回の課題は、この2つの配列を受け取るJavaScript関数を作成し、1つ目の配列(arr1)の要素の順序に従って、2つ目の配列(arr2)を並べ替えることです。 つまり、2つ目の配列に含まれる各オブジェクトのキーを、1つ目の配列の要素順に合わせてソートする必要があります。 したがって、期待される出力は次のようになります。 const output = [{d:4},{a:1},{b:2},{c:3}]; 実装コード
-
JavaScriptの配列から空の要素(undefined)をすべて削除する方法
例として、次のような配列リテラルがあるとしましょう。const arr = [4, 6, , 45, 3, 345, , 56, 6];この配列には、値が代入されていない「空のスロット(ホール)」が含まれています。ここでは、このような配列を受け取り、undefinedや空の要素だけを元の配列から直接(in-place)削除するJavaScript関数を作成します。注意すべき点は、削除対象がundefinedおよび空の値のみであるということです。0や空文字列()といった、他のfalsyな値まで削除してしまうのは誤りです。実装のアプローチforループで配列を先頭から走査し、Array.protot
-
JavaScriptで数値の階乗を計算する関数の実装方法
本記事では、数値 n を引数として受け取り、その階乗(factorial)を計算して返すシンプルな JavaScript 関数の作成方法を解説します。階乗とは階乗とは、1 からその数までのすべての整数を掛け合わせた値のことです。例えば 5 の階乗は「5 × 4 × 3 × 2 × 1 = 120」となります。数学的には「n!」と表記されます。なお、0 の階乗は定義により 1 とされます。アルゴリズムの考え方ここでは、カウンター用の変数と結果を格納する変数の 2 つを用意します。結果を格納する変数にカウンターの値を順次掛けていき、同時にカウンターを 1 ずつ減らしていきます。この処理をカウンター
-
【JavaScript】配列内の最小値を持つ要素のすべてのインデックスを取得する方法
JavaScriptで数値の配列を扱う際、「配列の中で最も小さい値(最小値)が、どの位置に存在するのか」を知りたいケースがあります。まず、次のような数値の配列を例に考えてみましょう。const arr = [1,2,3,4,1,7,8,9,1];最小値のインデックスを1つだけ取得する基本的な方法配列内の最小要素のインデックスを求めるだけであれば、Math.min()とindexOf()を組み合わせることで簡単に実現できます。const min = Math.min.apply(Math, arr); const ind = arr.indexOf(min);このコードを実行すると、変数indに