-
JavaScriptで配列から指定した数値に最も近い値を検索する方法
JavaScriptでは、数値の配列と基準となる数値を引数として受け取り、その中から最も差が小さい(最も近い)値を返す関数を作成できます。 この記事では、reduce()メソッドとMath.abs()を活用して、配列内から指定した数値に最も近い値を効率的に見つける方法を解説します。 実装コード const arr = [3, 56, 56, 23, 7, 76, -2, 345, 45, 76, 3]; const num = 37; const findClosest = (arr, num) => { const creds = arr.reduce((acc, val, in
-
JavaScriptで先頭の番号が同じ文字列をグループ化する方法
はじめに文字列形式で表された数値の配列を扱う場面は少なくありません。例えば、次のような配列を考えてみましょう。const arr = [1.1,1.2,1.3,2.1,2.2,3.1,3.2,3.3,4.1,4.2];ここで求められているのは、JavaScriptの関数を作成し、先頭の番号(ドットの前の部分)が同じ文字列どうしを、同じサブ配列にグループ化することです。つまり、この関数の出力は次のようになります。const output = [[1.1,1.2,1.3],[2.1,2.2],[3.1,3.2,3.3],[4.1,4.2]];実装例この処理を実現するコードは以下の通りです。cons
-
【JavaScript】除外ワード配列を使って文中の特定の単語をすべて置換・削除する方法
はじめに 本記事では、文字列と文字列の配列を受け取るJavaScript関数の実装方法について解説します。この種の処理は、テキストのクリーニングやフィルタリングなど、実際のWeb開発でもよく使われるテクニックです。 要件の確認 今回作成する関数には、以下の要件があります。 引数として、対象となる文字列と、除外したい単語の配列を受け取る。 元の文字列の中に含まれる単語のうち、配列内に存在するすべての出現箇所を空白文字に置き換えた新しい文字列を返す。 処理には String.prototype.replace() メソッドを使用する。 コード例 実際のコードは以下の通りです − var e
-
JavaScriptで配列の累積合計を求める方法
たとえば、次のような数値の配列があるとします。const arr = [1, 2, 3, 4, 5, 6];この配列を受け取り、元の配列の先頭から該当位置までの全要素を足し合わせた値を対応する要素とする、新しい配列を返すJavaScript関数を作成する必要があります。したがって、上記の配列の場合、期待される出力は次のようになります。const output = [1, 3, 6, 10, 15, 21];コード例この処理を実現するコードは以下のとおりです。const arr = [1, 2, 3, 4, 5, 6]; const findCumulativeSum = arr => {
-
JavaScriptのreduce()を使って累積和より大きい配列要素だけを残す方法
JavaScriptで、数値の配列を受け取る関数を作成することを考えてみましょう。この関数の役割は、元の配列の中から「その要素までの累積和(それ以前の全要素の合計)」よりも大きい値を持つすべての要素を取り出し、新しい配列として返すことです。さらに重要な条件として、この問題は Array.prototype.reduce() メソッドを使って解決する必要があります。コード例それでは、実際に関数を実装してみましょう。const arr = [1, 2, 30, 4, 5, 6]; const retainGreaterElements = arr => {  
-
JavaScriptで2次元配列から重複する値を削除する方法
この記事では、リテラル値を含む2次元配列を引数として受け取り、配列全体に存在する重複する値を取り除いた新しい配列を返すJavaScript関数の実装方法を解説します。ポイントは、すでに出現した値を記録しておく仕組みを作ることです。ここではオブジェクトをマップとして活用し、mapメソッドとfilterメソッドを組み合わせて処理を行います。サンプルコード以下のコードを見てみましょう。const arr = [ [1,2,3,4,5], [3,4,6,7,8,2], [7,2,4,9,11,15], [10,12,3,7,11] ]; const removeDupl
-
JavaScriptで2つの文字列を交互にマージする方法
本記事では、2つの文字列を引数として受け取り、それぞれの文字を交互に組み合わせた新しい文字列を返すJavaScript関数の作成方法を解説します。 例えば、次の2つの文字列が与えられたとします。 const str1 = abc; const str2 = def; 期待される出力 この場合、出力は以下のようになります。 const output = adbecf; つまり、str1 の1文字目「a」と str2 の1文字目「d」を連結し、続いて「b」と「e」、「c」と「f」を順番に組み合わせていくイメージです。なお、片方の文字列がもう片方より長い場合でも、余った文字はそのまま末尾
-
JavaScriptの可変長引数(レスト構文)を使って配列から複数の要素を削除する方法
はじめにJavaScriptでは、配列から特定の要素を削除したい場面はよくあります。本記事では、可変長引数(レストパラメータ)を活用して、元の配列から指定した文字列をすべて直接削除する関数の実装方法を解説します。まず、次のような文字列リテラルの配列を用意します。const arr = [cat,dog,elephant,lion,tiger,mouse];ここで求められているのは、第一引数に対象の配列を受け取り、第二引数以降には削除したい文字列を任意の個数だけ渡せるJavaScript関数を作成することです。そして、この関数は引数として渡された文字列が元の配列に存在する場合、その要素を元の配列
-
JavaScriptで配列内の重複オブジェクトを削除する方法
例えば、次のようなオブジェクトの配列があったとします。const arr = [ {title: Assistant}, {month: July}, {event: Holiday}, {title: Assistant} ];ここで求められているのは、このような配列を引数として受け取り、元の配列に含まれるすべてのオブジェクトのうち、重複しているものを除外した新しい配列を返すJavaScript関数を作成することです。実装例この処理を実現するコードは以下のようになります。 { const map = {}; for(let i = 0; i &
-
JavaScriptで別の配列の順序に従って配列を並べ替える方法
問題の概要 次のような2つの配列があるとします。 const arr1 = [1, 3, 2, 4, 5, 6]; const arr2 = [1, 2, 5]; ここで求められているのは、このような2つの配列を受け取るJavaScript関数を作成することです。この関数は、arr1の全要素を含みながら、arr2の順序に従って並べ替えた配列を返す必要があります。 ルールを整理すると、以下のようになります。 両方の配列に存在する要素は、2番目の配列(arr2)内での出現順に従って先頭へ配置する arr1にのみ存在する要素は、元の順序を保ったまま後ろに続ける サンプルコード この要件を実現す
-
【JavaScript】配列の配列から重複する共通のサブ配列を除外してユニークな配列を取得する方法
問題の概要 JavaScriptでは、配列の中にさらに配列が格納された「配列の配列(ネストされた配列)」を扱う場面が多くあります。例えば、以下のようなデータを考えてみましょう。 const arr = [ [ Serta, Black Friday ], [ &n
-
【JavaScript】名前の頭文字(最初の1文字)ごとにグループ化する方法
はじめにJavaScriptでは、配列内のデータを特定の条件で分類したい場面がよくあります。本記事では、名前が格納された配列を「頭文字(最初の1文字)」ごとにグループ化する方法を解説します。たとえば、次のような名前の配列があるとします。const arr = [Simon, Mike, Jake, Lara, Susi, Blake, James];この配列を受け取り、以下の2つのプロパティを持つオブジェクトの配列を返す関数を作成する必要があります。letter … グループ化の基準となる頭文字names … その頭文字に該当する名前の配列実装コードこの処理は、reduce()メソッドを使って
-
JavaScriptで配列内のオブジェクトを反復処理し、プロパティの合計値を求める方法
JavaScriptでは、オブジェクトが格納された配列から特定のプロパティの合計を求めたい場面がよくあります。例えば、次のようなオブジェクトの配列があるとします。const arr = [ { duration: 10, any: fields }, { duration: 20, any: other fields }, { duration: 15, any: some other fields } ];このような配列を受け取り、各オブジェクトが持つ duration プロパティの値をすべて足し合わせた結果を返すJavaScr
-
JavaScriptで配列の組み合わせを文字列化し、出現頻度ランキングを生成する方法
本記事では、任意の個数の数値配列を受け取り、各要素やその組み合わせが全体の中で何回出現したかを集計した頻度マップ(オブジェクト)を返すJavaScript関数の作成方法を解説します。 やりたいことの確認 例えば、以下のように複数の配列が与えられたとします。 const a = [23, 45, 21], b = [45, 23], c = [21, 32], d = [23], e = [32], f = [50, 54]; このとき求めたいのは、単一の数値だけでなく、配列内の要素同士の組み合わせ(例:「23, 45」「21, 23, 45」など)も含めて、それぞれが何回登場したかをカウントし
-
【JavaScript】配列から長さnの組み合わせをすべて生成し、それぞれの合計を求める方法
本記事では、数値の配列を第1引数に、整数 n を第2引数として受け取るJavaScript関数の作成方法を解説します。ここで n は、常に配列の長さ以下であると仮定します。 この関数の役割は、元の配列から長さ n の部分配列として考えられるすべての組み合わせを抽出し、それぞれの要素の合計値をまとめた配列として返すことです。 入力例と出力例 たとえば、次のような入力が与えられた場合を考えてみましょう。 const arr = [2, 6, 4]; const n = 2; このとき、長さ2の部分配列として取り得るのは [2, 6]、[2, 4]、[6, 4] の3通りです。それぞれの合計は 8
-
【JavaScript】別の配列(オブジェクト)に存在しない値だけを抽出する方法
問題の概要次の2つの配列(arr1 と arr2)が与えられたとします。arr1:いくつかのリテラル値(数値など)が格納された配列arr2:一部のリテラル値を identifier プロパティとして持つオブジェクトの配列ここで求められているのは、この2つの配列を引数として受け取るJavaScript関数を作成することです。作成する関数は、arr2 内のオブジェクトに含まれていない(マッピングされていない)arr1 の要素だけを抽出し、新しい配列として返す必要があります。実装コードこの問題は、Array.prototype.filter() メソッドと Array.prototype.find(
-
JavaScriptで入れ子構造のJSONから一致するすべての都市データを検索して返す方法
はじめに Webアプリケーション開発では、国・州・都市のように階層化されたJSONデータを扱う場面が少なくありません。本記事では、入れ子構造を持つJSONオブジェクトの中から、指定した検索文字列に一致するすべての都市オブジェクトを配列として取得するJavaScript関数の実装方法を、サンプルコードと実行結果とあわせて解説します。 扱うデータ構造の確認 今回の例では、country(国)→ province(州)→ city(都市)という3階層の入れ子構造を持つオブジェクトを使用します。中身は次のようになっています。 const countryInfo = { country: [{
-
JavaScriptで文字列から最短の単語を検索する方法
JavaScriptで、文字列を受け取りその中から最も短い単語を返す関数を作成する方法を紹介します。たとえば、入力文字列が以下の場合:const str = This is a sample string;期待される出力は次のようになります:const output = a;実装コードこの処理を実現するコードは以下の通りです:const str = This is a sample string; const findSmallest = str => { const strArr = str.split( ); const creds = strArr.reduce((
-
JavaScriptでdayプロパティの値に基づいてオブジェクトをグループ化する方法
この記事では、JavaScriptにおいて、オブジェクト内の各要素を特定のプロパティ(day)の値ごとにグループ化し、新しいオブジェクトとして分離する方法を解説します。 問題の定義 まず、次のようなオブジェクトがあると仮定しましょう。 const obj = { 0: { time: 1, day: 1 }, 1: { time: 2, day: 1 }, 2: { time: 3, day: 1 }, 3: { time: 1, day: 2 }, 4: { time: 2, day: 2 }, 5: { time: 3, day: 2 }
-
JavaScriptで数値をアルファベットにマッピングして全パターンを列挙する方法
課題の内容 ここでは、数値 12145 を例に考えてみます。求められているのは、数値の各桁(または隣接する桁をつなげた2桁)を、以下のルールに従って英語のアルファベットへ対応付ける関数です。 アルファベットは1始まりのインデックスで対応付ける 1 →「a」、2 →「b」、3 →「c」…というように、26 →「z」まで割り当てる 一つの数値に複数のマッピングが存在する 実は、同じ数値でも桁の区切り方によって複数の変換結果が生まれます。先ほどの 12145 を例に見てみましょう。 12145 → 1, 2, 1, 4, 5 → abade 最初の2桁をまとめて「12」と見なせば、12番目のア