-
JavaScriptで配列の最大値が存在するすべてのインデックスを取得する方法
JavaScriptでは、数値の配列から最大値が格納されているインデックス(位置)を取得したい場面があります。さらに、配列内には最大値が複数回出現するケースも考えられます。そこで本記事では、数値の配列を受け取り、その中の最大値が存在するすべてのインデックスを配列として返す関数の実装方法を解説します。実装の流れ実装は以下の2ステップで行います。Math.max()とスプレッド構文(...)を組み合わせて、配列内の最大値を求めるreduce()メソッドで配列を走査し、最大値と一致する要素のインデックスだけを収集するコード例実際のコードは次のとおりです。 { if(element =
-
JavaScriptでウラム数列(コラッツ数列)を生成する方法を解説
ウラム数列とは?数学者のウラム(Ulam)は、任意の正の整数 n(n > 0)から出発して、次のルールに従って数列を生成する方法を提案しました。なお、この数列は「コラッツ数列」や「角谷の問題」として知られるものと同じ規則に基づいています。n が 1 なら、処理を終了する。 n が偶数なら、次の数は n / 2。 n が奇数なら、次の数は 3 * n + 1。 1 に到達するまでこの処理を繰り返す。最初のいくつかの整数について、実際に数列を生成した例がこちらです。2 -> 1 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -&
-
JavaScriptで浮動小数点数を分割し、小数第2位で四捨五入して商と余りを求める方法
概要たとえば、次のような浮動小数点数があるとします。2.74この数値をそのまま4で割ると、結果は 0.685 になります。ここで、同じく4で割りながら、結果を小数点以下2桁に丸めて扱いたいケースを考えてみましょう。その場合、期待する出力は次のようになります。0.69 × 3 と余り 0.67コード例この処理を実現するコードは以下のとおりです。const num = 2.74; const parts = 4; const divideWithPrecision = (num, parts, precision = 2) => { const quo = +(num / parts
-
JavaScriptでJSONオブジェクト内の最小値を効率的に取得する方法
JSONオブジェクトから最小値を取り出すJavaScript関数文字列のキーに数値がマッピングされたJSONオブジェクトを、唯一の引数として受け取るJavaScript関数を作成することを考えてみましょう。この関数の役割は、オブジェクト内のすべての値を走査し、その中で最も小さい値を見つけて返すことです。実装例実際のコードは以下のようになります。 { return Math.min(acc, obj[val]); }, Infinity); return smallest; } console.log(findSmallestValue(obj));出力結果コンソ
-
JavaScriptでJSONオブジェクトを配列に変換する方法を徹底解説
例えば、次のようなJSONオブジェクトがあるとします。このオブジェクトでは、インデックス番号を表すキーがそれぞれの文字列(リテラル)にマッピングされています。const obj = { 0: Rakesh, 1: Dinesh, 2: Mohit, 3: Rajan, 4: Ashish };このようなオブジェクトを引数として受け取り、オブジェクトが持つ値を使って配列を構築するJavaScript関数を作成することを目標とします。キーが連続した数字になっているため、変換後は通常のインデックス付き配列として扱えるのがポイントです。実装例コードは以下のように
-
JavaScriptで指定した行数・列数の2次元配列を初期値つきで生成する方法
JavaScriptでは、「指定した行数・列数を持ち、各要素が特定の初期値で埋められた2次元配列」を作成したい場面がよくあります。本記事では、そのような配列を柔軟に生成できる関数の実装方法を解説します。 関数の仕様 作成する関数は、以下の3つの引数を受け取ります。 height → 配列の行数 width → 配列の列数 val → 各要素の初期値 そして、これらの条件に基づいて生成された新しい2次元配列を返します。 実装例 { return value; }); }); return arr; }; console.log(fillArray(cols
-
JavaScriptで複数の数値の最小公倍数(LCM)を計算する方法
本記事では、任意の長さの数値の配列を受け取り、それらすべての最小公倍数(LCM:Least Common Multiple)を返すJavaScript関数の実装方法を解説します。この問題は、以下の3つのステップに分けて段階的に解決していきます。 アプローチの概要 ステップ1:GCD(最大公約数)を求めるヘルパー関数を作成する まず、2つの整数の最大公約数(GCD:Greatest Common Divisor)を計算するヘルパー関数を用意します。ここでは、再帰呼び出しで簡潔に記述できる古典的なアルゴリズム「ユークリッドの互除法」を採用します。これは「2数の最大公約数は、大きい方を小さい方で割っ
-
JavaScriptで数値をインド通貨(ルピー)形式に変換する方法
インド通貨フォーマットとは任意の数値を受け取り、それをインドの通貨表記(インドルピー)に変換して返すJavaScript関数を作成することを考えてみましょう。インドの数値表記は日本や欧米とは異なり、桁区切りのルールが独特です。下3桁を区切った後は2桁ずつグループ化するのが特徴で、例えば 76768798 は 7,67,68,798 と表記されます。これはラーク(10万)やクロール(1000万)といったインド固有の位取り単位に基づいています。toCurrency(1000) → ₹1,000.00toCurrency(129943) → ₹1,29,943.00toCurrency(767687
-
【JavaScript】日付プロパティでオブジェクト配列を並べ替える方法
例えば、次のようなオブジェクトの配列があるとします。const arr = [{id: 1, date: Mar 12 2012 10:00:00 AM}, {id: 2, date: Mar 8 2012 08:00:00 AM}];このような配列を受け取り、各オブジェクトが持つ date プロパティの値に基づいて並べ替える JavaScript 関数を作成する必要があります。並び順は「新しい日付から古い日付へ」でも「古い日付から新しい日付へ」どちらでも構いません。基本的なアプローチとしては、文字列形式の日付を JavaScript の Date オブジェクトに変換し、そのタイムスタンプ(ミ
-
JavaScriptで配列内の重複キーの値を合計する方法
例えば、次のようなオブジェクトの配列があったとします。const arr = [ {TR-01:1}, {TR-02:3}, {TR-01:3}, {TR-02:5}];ここで求められるのは、このような配列を引数として受け取り、同一のキーに含まれる値をすべて合計してまとめるJavaScript関数です。つまり、重複しているキーごとに値を足し合わせ、1つのオブジェクトに集約する処理を実装します。したがって、期待される出力は次のようになります。const output = [ {TR-01:4}, {TR-02:8}];コード例実際の実装コードは以下のとおりです。const arr = [ {TR
-
【JavaScript】数値と文字列が混在する配列から平均値を求める方法
JavaScriptでは、ひとつの配列の中に数値や文字列など、異なるデータ型の要素が混在することがあります。たとえば、次のような配列を考えてみましょう。 const arr = [1,2,3,4,5,"4","12","2",6,7,"4",3,"2"]; 今回の課題は、このような配列を受け取り、数値そのもの、あるいは部分的・完全的に数値へ変換できる要素だけを対象として平均値を返すJavaScript関数を作成することです。 たとえば "3454fdf" のような文字列はサン
-
JavaScriptで配列をn個ずつのグループに分割する方法
本記事では、要素の配列と数値を引数として受け取り、第1引数の配列を第2引数で指定した長さ n ごとのグループに分割し、その結果得られる二次元配列を返すJavaScript関数の実装方法を詳しく解説します。 要件の確認 たとえば、配列と数値が以下のように与えられたとします。 const arr = [a, b, c, d]; const n = 2; この場合、期待される出力は次のとおりです。 const output = [[a, b], [c, d]]; このように、元の配列が2要素ずつのかたまり(チャンク)に分割され、それらをまとめた新しい配列が返されます。 forループと剰余演算子を
-
【JavaScript】1つの範囲に含まれる複数の範囲の合計を求めるアルゴリズム
問題の概要ここでは、2種類の範囲(レンジ)を扱います。1つは任意の長さを持つ単一の範囲 R1、もう1つは複数の範囲からなる集合 R2 です。R2 に含まれる各範囲は、R1 に完全に収まることもあれば、一部だけが重なることも、まったく重ならないこともあります。目的は、R2 の各範囲のうち R1 と重なっている部分(全体または一部)の長さをすべて合計することです。入力例 1const R1 = [20,40];const R2 = [[14,22],[24,27],[31,35],[38,56]];結果= 2+3+4+2 = 11[14,22] は R1=[20,40] との重なりが 20〜22
-
JavaScriptで文字列の先頭文字に基づいて配列をフィルタリングする方法
はじめに次のような、人名を格納した配列があるとします。const arr = [Amy,Dolly,Jason,Madison,Patricia];ここで必要なのは、このような配列を第1引数として受け取り、さらに小文字のアルファベット2文字を第2引数・第3引数として受け取るJavaScript関数です。この関数は、第2引数と第3引数で指定された範囲内のアルファベットで始まる要素だけを残すよう、配列をフィルタリングします。たとえば、第2引数と第3引数がそれぞれ「a」と「j」だった場合、出力結果は次のようになります。const output = [Amy,Dolly,Jason];コード例実際にコ
-
【JavaScript】文字列配列に含まれる母音の数を数える方法
はじめに本記事では、文字列の配列(要素は1文字の場合もあれば、複数文字の場合もあります)を受け取り、その配列に含まれるすべての母音(a・e・i・o・u)の個数を数えるJavaScript関数の作成方法を解説します。実装例まずは、実際に動作するコードを見てみましょう。const arr = [Amy,Dolly,Jason,Madison,Patricia]; { const legend = aeiou; legend.includes(c); let count = 0; { &
-
JavaScriptでオブジェクト配列をループ処理して新しいオブジェクトを作成する方法
例えば、次のようなオブジェクトの配列があったとします。const arr = [ { customer: Customer 1, project: 1 }, { customer: Customer 2, project: 2 }, { customer: Customer 2, project: 3 } ]ここで求められているのは、このような配列を受け取り、新しい配列を返すJavaScript関数を作成することです。新しい配列では、同じ値を持つ customer キー同士をマージする必要があります。期待される出力は次のよ
-
JavaScriptで角括弧形式のオブジェクトキーをネストされたオブジェクトに変換する方法
JavaScriptでは、オブジェクト内のネストされた(入れ子になった)キーにアクセスする方法は主に2つあります。まず、次のようなオブジェクトを例に考えてみましょう。const obj = { object: { foo: { bar: { ya: 100 } } } };このオブジェクトの深い階層にあるプロパティ「ya」にアクセスしたり値を更新したりする場合、次の2通りの記述方法があります。アクセス方法の2つのスタイル方法1:角括弧記法obj[object][foo
-
JavaScriptで2つのオブジェクトを比較し、共通の値を持つキーの配列を取得する方法
JavaScriptでは、2つのオブジェクトを受け取り、両方のオブジェクトに存在し、かつ同じ値を持つキーだけを抽出して配列として返す関数が必要になることがあります。 このような処理は、Object.keys()とfilter()を組み合わせることで、シンプルかつ効率的に実装できます。以下に具体的な実装例を紹介します。 実装例 まず、比較対象となる2つのオブジェクトを用意します。その後、アロー関数を使って共通キーを判定する処理を記述します。 { if(obj1[key] === obj2[key] && obj2.hasOwnProperty(key)){
-
JavaScriptでオブジェクトの配列をフィルタリングする方法
JavaScriptでは、数値や文字列などのリテラル値の配列と、オブジェクトが格納された配列を組み合わせてデータを扱う場面がよくあります。ここでは、リテラル値の配列に含まれる値を持つオブジェクトだけを抽出するフィルタリング処理の実装方法を解説します。前提となるデータ構造まず、次のような2つの配列を用意します。1つはリテラル値の配列、もう1つは「city」キーを持つオブジェクトの配列です。const source = [1, 2, 3, 4, 5]; const cities = [{ city: 4 }, { city: 6 }, { city: 8 }];この例では、source 配列に含ま
-
【JavaScript】特定の合計値になる一意の数値ペアを見つけ、そのインデックスの合計を求める方法
今回は、数値の配列を第1引数に、目標となる合計値(target sum)を第2引数にとる関数をJavaScriptで作成します。関数では配列をループ処理し、各要素どうし(自分自身との組み合わせは除く)の和を順番に計算していきます。ループ中の2つの値の合計が目標値と一致し、かつそのペアがまだ出現していない場合は、該当する要素のインデックスを記憶します。最終的に、記憶したすべてのインデックスの合計値を返すのが目的です。例として、配列が次のような場合を考えてみましょう。const arr = [1, 4, 2, 3, 0, 5];目標の合計値が次の場合です。const sum = 7;このとき、期待