JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. 配列を受け取り、データ型ごとに分類したMapを返すJavaScript関数の作り方

    混合したデータ型を含む配列を受け取り、要素をそれぞれのデータ型ごとにグループ化した Map を返す関数 classifyArray() を作成することを考えてみましょう。要件の例 [ true, false ] }コード例この関数は、Array.prototype.reduce() メソッドと Map オブジェクトを組み合わせることで簡潔に実装できます。各要素に対して typeof 演算子でデータ型を判定し、その型をキーとして要素を振り分けていきます。 { const previousData = acc.get(typeof val); if(previous

  2. JavaScriptで数値の配列を個々の桁に分割する方法

    数値リテラルの配列が与えられたとき、splitDigit() のような関数を作成することを考えます。この関数は配列を受け取り、10以上の数値を個々の桁に分割した新しい数値の配列を返します。 期待される動作 // 入力: const arr = [ 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106 ]; // 出力: const output = [ 9, 4, 9, 5, 9, 6, 9, 7, 9, 8, 9, 9, 1, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 4, 1, 0, 5,

  3. JavaScriptで多次元配列内の要素の出現回数を再帰的にカウントする方法

    文字列がネストされた多次元配列が与えられたとき、その配列と検索対象の文字列を受け取り、指定した文字列が配列内に出現する回数を返す関数を書く必要があります。 実装のアプローチ この問題を解決するには再帰処理を使用します。ネストされた配列の中身も探索できるよう、Array.isArray()メソッドで要素が配列かどうかを判定し、配列であれば自分自身を呼び出して再帰的にカウントを続けます。 具体的な流れは以下のとおりです。 ループで各要素を順番にチェックする 要素が検索文字列と一致すれば、カウンターを1つ増やす 要素が配列であれば、その配列に対して同じ関数を再帰的に実行し、結果を合計に加算す

  4. JavaScriptでMath関数を使わずに最小値を取得する方法

    本記事では、任意の個数の数値リテラルを引数として受け取り、ライブラリ関数(Math.minなど)を一切使用せずに、その中から最も小さい数値を返す関数の作成方法を解説します。この問題は、whileループを使ったシンプルな比較処理によって効率よく解決できます。以下に具体的な実装例を示します。実装例const numbers = [12, 5, 7, 43, -32, -323, 5, 6, 7, 767, 23, 7]; const findMin = (...numbers) => { let min = Infinity, len = 0; while(len++ <

  5. JavaScriptでネストした配列をフラット化する方法【再帰・reduce・flat】

    JavaScriptでは、入れ子(ネスト)になった配列からすべての要素を取り出し、階層構造のない平坦な(一次元の)配列を作りたい場面がよくあります。本記事では、ネストされた配列を受け取ってフラットな配列を返す関数を、複数のアプローチで実装する方法を解説します。 やりたいこと 例えば、次のような入力に対して、以下の出力を得ることを目指します。 // 入力: const arr = [[1, 2, 3], [4, 5], [6]]; // 期待する出力: const output = [1, 2, 3, 4, 5, 6]; それでは、この処理を実現するコードを順番に見ていきましょう。 方法1:再帰

  6. 【JavaScript】配列内の隣接する要素間の距離(差)を求める方法

    本記事では、数値の配列を受け取り、元の配列の隣接する2つの要素の差(絶対値)を要素として持つ新しい配列を返す関数 arrayDistance() の作成方法を解説します。要件の確認例えば、次のような入力配列が与えられたとします。const arr = [1000,2000,5000,4000,300,0,1250];この場合、期待される出力は各隣接要素間の差になります。[(1000-2000),(2000-5000),(5000-4000),(4000-300),(300-0),(0-1250)]なお、ここでは差の絶対値を取るため、結果はすべて正の数になります。それでは、実際にコードを書いてみ

  7. JavaScriptで配列内の同一要素をサブ配列にグループ化する方法

    問題の概要 重複した要素を含む数値の配列が与えられたとき、その配列を受け取り、値が同じ要素どうしをひとつのサブ配列にまとめて、新しい配列として返す関数を作成するのが課題です。 たとえば、次のようになります。 // 入力配列が以下の場合: const arr = [1, 3, 3, 1]; // 出力は次のようになります: const output = [[1, 1], [3, 3]]; アプローチ:ハッシュマップで出現済みの要素を管理する この問題を解くには、すでに出現した要素と、それが属するサブ配列のインデックスを記録しておくためのハッシュマップ(JavaScriptではオブジェクト)を使

  8. JavaScriptで配列から連続する重複要素を再帰的に削除する方法

    数値リテラルからなる配列に、次のような連続した重複する値が含まれている場合を考えてみましょう。const testArr = [1, 1, 2, 2, 3, 3, 1, 1, 1];ここでの課題は、この配列を受け取り、連続する重複要素をすべて元の配列上で直接削除する関数 compress を作成することです。期待される出力は次のとおりです。const output = [1, 2, 3, 1];再帰を使った実装例それでは、再帰処理を使ってこの関数を実装してみましょう。コードは以下の通りです。const testArr = [1, 1, 2, 2, 3, 3, 1, 1, 1]; const c

  9. JavaScriptで配列をチャンクに分割する方法|reduce()を使った実装を解説

    配列をチャンクに分割するとはJavaScriptでは、配列を指定した数のサブ配列(チャンク)に分割したいケースがよくあります。本記事では、文字列や数値からなる配列 arr を第1引数に、分割数 n を第2引数として受け取り、n 個のサブ配列を返す関数 chunk() を実装する方法を解説します。要素の分配ルール各サブ配列には、最大で arr.length / n 個の要素が含まれます。要素の分配は以下のルールに従います。1番目の要素は1番目のサブ配列へ、2番目の要素は2番目のサブ配列へ、というように順番に振り分けるすべてのサブ配列に1つずつ要素が入ったら、再び1番目のサブ配列から2つ目の要素を

  10. JavaScriptの再帰処理で「+5」か「×3」の繰り返しにより特定の数に到達できるかを判定する方法

    問題の概要数値 1 からスタートして、「5を足す」または「3を掛ける」という操作を繰り返し適用することで、無限に多くの新しい数値を生成することができます。本記事では、与えられた数値に対して、その数値を生成する一連の加算・乗算の手順が存在するかどうかを判定する関数をJavaScriptで実装します。そのような手順が存在すれば true を、存在しなければ false を返します。例例えば、数値 13 は「まず3を掛け、その後2回5を足す」という操作で到達できます(1 × 3 = 3 → 3 + 5 = 8 → 8 + 5 = 13)。したがって、この関数は 13 に対して true を返します。

  11. JavaScriptで再帰処理を使って配列の中央の要素を取得する方法

    本記事では、lengthプロパティにアクセスせず、かつfor文やwhile文などの組み込みループも使わずに、配列の中央にある要素を返す関数 findMiddle を実装します。 要件の整理 求められる仕様は以下のとおりです。 配列の要素数が奇数の場合 → 中央の要素を1つだけ返す 配列の要素数が偶数の場合 → 中央に位置する2つの要素を配列として返す length プロパティは使用禁止 組み込みのループ構文(for / while / for...of など)は使用禁止 実装方針:再帰で要素数を数える ループが使えないため、ここでは再帰呼び出しを活用します。インデックスを1ずつ増やしながら

  12. Pythonのzip関数に相当する処理をJavaScriptで実装する方法

    Pythonには、複数のイテラブルをまとめてタプル(組)の配列を作るzip関数が標準で用意されています。本記事では、このzip関数と同等の動作をする関数をJavaScriptで実装する方法を解説します。つまり、同じ長さを持つ複数の配列が与えられたとき、対応する要素同士をペア(組)にした配列を生成する必要があります。やりたいこと例えば、次のような3つの配列があるとします。const array1 = [1, 2, 3]; const array2 = [a, b, c]; const array3 = [4, 5, 6];これらに対してPythonのzipのような処理を行うと、出力は次のようにな

  13. JavaScriptで他のプロパティ値に基づいてオブジェクト配列を新しい配列へマップする方法

    例えば、次のようなオブジェクトの配列があるとしましょう。各オブジェクトは「country(国名)」と「count(出現回数)」という2つのプロパティを持っています。 const arr = [{     country: canada,     count: 2 }, {     country: jamaica,     count: 2 }, {     country: russia, &

  14. JavaScriptで2つの数値の最小公倍数(LCM)を計算する方法

    本記事では、2つの数値を受け取ってその最小公倍数を返す関数を、JavaScriptで作成していきます。 最小公倍数(LCM)とは 2つの数 a と b の最小公倍数とは、a と b のどちらでも割り切れる正の整数のうち、最も小さいものを指します。 例えば、6と8の最小公倍数は24です。これは、24が6と8の両方で割り切れる最も小さい正の整数だからです。 最小公倍数の求め方 最小公倍数を求める方法はいくつかありますが、そのひとつが「2つの数の積を、両方を割り切れる最大の整数(最大公約数・GCD)で割る」というアプローチです。 6と8の場合を見てみましょう。2つの数の積は48で、両方を割り切れる最

  15. JavaScriptで範囲内の数値の最小公倍数(LCM)を計算する方法

    本記事では、2つの数値 a と b(a ≤ b)を含む配列を受け取り、[a, b] の範囲内に存在するすべての数値の最小公倍数(LCM:Least Common Multiple)を返す関数をJavaScriptで実装します。 アプローチ 実装は以下の2段階で行います。 まず、2つの数値の最小公倍数を計算する基本的な関数 lcm を作成します。この関数は、小さい方の数値から順に降下しながら、両方の数値を割り切れる最大の約数(最大公約数)を探し、見つかれば a × b ÷ その約数 を返します。共通の約数が存在しない場合は、そのまま a × b が最小公倍数となります。 次に、この lcm 関数

  16. 【JavaScript】文字列の配列から指定文字列の部分列(組み合わせ)を検索する方法

    この記事では、文字列の配列と1つの文字列を受け取り、配列の中にその文字列の一部の並び(部分列)が含まれているかどうかを判定する関数を JavaScript で実装します。判定結果は真偽値(true / false)として返します。 問題の概要 たとえば、対象となる文字列が ACBC の場合、次のような配列を渡したときに期待される結果は以下のとおりです。 const x = ACBC; const arr = [cat,AB]; const arr2 = [cat,234,C]; const arr3 = [cat,CC]; const arr4 = [cat,BB]; console.log

  17. JavaScriptで奇数インデックスの配列要素をインデックス値で乗算する方法

    概要本記事では、数値の配列を引数として受け取る関数を作成します。この関数は、偶数インデックス(0, 2, 4...)に位置する要素はそのまま返し、奇数インデックス(1, 3, 5...)に位置する要素は対応するインデックス値を掛けた結果を返すものです。処理内容の確認まず、具体的な入力と期待される出力を見てみましょう。入力:    [5, 10, 15, 20, 25, 30, 50, 100]期待される出力:    [5, 10, 15, 60, 25, 150, 50, 700]この結果から以下のことが分かります

  18. JavaScriptのreduce()メソッドで2次元配列をオブジェクトに変換する方法

    JavaScriptでは、名前と年齢などのデータを含む2次元配列(配列の中に配列が入った構造)を扱うことがあります。このようなデータは、キーと値のペアを持つオブジェクトに変換すると、検索や操作が格段に行いやすくなります。 本記事では、Array.prototype.reduce()メソッドを使って2次元配列をオブジェクトに変換する方法を解説します。 変換元となる2次元配列の例 まず、人物の名前と年齢のデータが格納された、以下のような2次元配列を想定します。 const data = [ [Rahul, 23], [Vikky, 27], [Sanjay, 29],

  19. JavaScriptで2次元配列をカテゴリ別にグループ化されたオブジェクトの配列へ変換する方法

    問題の概要ここでは、色や果物に関するデータを格納した次のような2次元配列があると仮定します。const data = [ [orange, fruit], [red, color], [green, color], [orange, color], [banana, fruit], [blue, color], [lemon, fruit], [mango, fruit], [lemon, color], ];この配列を引数として受け取り、要素(果物や色)をそれぞれのカテゴリごとにグループ化した配列を返す関数を作成する必要

  20. JavaScriptで合計がターゲット値と一致する配列内の3つの要素を見つける方法

    本記事では、数値の配列とターゲットとなる合計値を受け取る関数 threeSum() の実装方法を解説します。この関数は、配列内に合計がターゲット値と一致する3つの数字が存在するかどうかを判定し、存在する場合はそのインデックスを配列で返し、存在しない場合は -1 を返します。解決策のアプローチまず、補助関数 twoSum() を作成します。これは配列とターゲットの合計を受け取り、線形時間 O(N)・線形空間で、合計がターゲットに一致する2つの数字のインデックスを返す関数です。見つからない場合には -1 を返します。次に、本体となる threeSum() 関数を実装します。この関数は配列内の各要素

Total 5937 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:117/297  20-コンピューター/Page Goto:1 111 112 113 114 115 116 117 118 119 120 121 122 123