JavaScript

 Computer >> コンピューター >  >> プログラミング >> JavaScript
  1. JavaScriptでJSONファイルから条件に合う値だけを選択的に抽出する方法

    本記事では、Node.js環境のJavaScriptを使って、JSONファイルから条件を満たすデータだけを選択的に抽出する方法を解説します。サンプルデータまず、以下のような内容を持つJSONファイルdata.jsonを用意します。names配列の各要素は、名前を表す「name」と、読み取り可否を示す真偽値「readable」の2つのプロパティを持っています。{ "names": [{ "name": "Ramesh", "readable": true }, {

  2. JavaScriptで合計値が最大となるサブ配列のインデックスを返す方法

    数値を要素に持つ「配列の配列」(ネストされた配列)が与えられたとき、各サブ配列の合計値を比較し、その合計が最大となるサブ配列のインデックスを返す関数を作成してみましょう。同じ最大値を持つサブ配列が複数存在する場合は、最初に出現したもののインデックスを返すのが条件です。それでは、実際のコードを見ていきましょう。コード例 acc.sum){ return { index: ind, sum }; }; return acc; }, { index: -1, su

  3. 【JavaScript】特殊文字の位置を固定したまま配列を反転するアルゴリズムの解法

    問題の概要今回は「配列を反転する関数を作成するが、配列内に含まれる特殊文字のインデックスは変更してはならない」という要件を持つアルゴリズム問題を取り上げます。例として、特殊文字を「#」とすると、次の配列は−[18,-4,#,0,8,#,5]以下のように変換される必要があります。[5, 8, #, 0, -4, #, 18]ご覧の通り、数値のみが反転されており、「#」は元のインデックス位置を保持したままになっています。解決のアプローチ:両ポインタ法この問題は「両ポインタ(two-pointer)」アプローチを使うことで効率的に解くことができます。まず、startポインタを配列の左端に

  4. JavaScriptで四則演算に対応した電卓関数を作成する方法

    JavaScriptでは、演算子を示す1文字(+、-、*、/)を第一引数に受け取り、その後に任意の個数の数値リテラルを受け取る関数 calculator() を作成できます。この関数の役割は、第一引数で指定された演算を、後続のすべての数値に対して実行し、その結果を返すことです。関数の仕様演算の種類によって処理の考え方が異なります。加算(+)・乗算(*)の場合: すべての要素に対して同じ演算を順番に適用します。減算(-)・除算(/)の場合: 最初の要素を基準値とし、そこから残りの要素を順に引く、または割っていく必要があります。コード例それでは、この関数の実装コードを見ていきましょう。const

  5. JavaScriptで配列内のnull値や空文字を含むオブジェクトを除外する方法

    ここでは、会社の従業員情報を格納したオブジェクトの配列を例に考えてみましょう。しかし、この配列には「名前が空文字列になっている」「キーにfalse相当の値が入っている」といった不正なデータ(不良データ)が混在しています。そこで私たちの課題は、配列を受け取り、name キーの値が null、undefined、あるいは空文字列であるオブジェクトを取り除き、新しい配列を返す関数を作成することです。対象となるオブジェクト配列の例let data = [{ name: Ramesh Dhiman, age: 67, experience: 45, description

  6. 【JavaScript】配列から1要素の削除で「厳密に増加する数列」を作れるか判定する方法

    整数の数列が配列として与えられたとき、そこから最大で1つの要素を削除することによって、厳密に増加する数列(strictly increasing sequence)を作ることができるかどうかを判定する問題について解説します。問題の例例を見てみましょう。sequence = [1, 3, 2, 1] の場合 → 出力は false。この配列では、どの1要素を取り除いても厳密に増加する数列を得ることはできません。sequence = [1, 3, 2] の場合 → 出力は true。「3」を削除すれば [1, 2] という厳密に増加する数列が得られます。あるいは「2」を削除して [1, 3] とし

  7. JavaScriptで2つの配列の中身が同じかどうかを判定する方法(順序を無視して比較)

    数値からなる2つの配列、例えば次のようなものを考えてみましょう。[2, 4, 6, 7, 1] [4, 1, 7, 6, 2]ここでは、要素の並び順に関係なく、両方の配列が同じ要素を含んでいるかどうかを判定し、結果をブール値(true / false)で返す関数を作成します。例えば [2, 4, 6, 7, 1] と [4, 1, 7, 6, 2] は、含まれる要素は同じでも順序が異なるため、この関数は true を返すべきです。基本的な実装方法考え方はシンプルです。まず両配列の長さを比較し、一致していなければ false を返します。その後、片方の配列の各要素がもう片方の配列に含まれているか

  8. JavaScriptで配列の要素間に演算子オブジェクトを挿入する方法

    次のような数値の配列があるとします。const numbers = [1, 6, 7, 8, 3, 98];この数値の配列を、各要素が「value」というキーを持ち、その値として元の配列の要素を格納するオブジェクトの配列へと変換することを目指します。それに加えて、隣り合う2つの要素の間には「operation」というキーを持つオブジェクトを挿入し、その値としては +、-、*、/ の中から順番に1つずつ使用します。したがって、numbers 配列の場合、期待される出力は以下のようになります。[     { value: 1 }, { operation:

  9. JavaScriptで配列内の複数の要素を先頭に移動する方法を解説

    JavaScriptでは、配列と任意の個数の文字列を引数として受け取り、その文字列が配列内に存在する場合、該当する要素を配列の先頭へ移動する関数が必要になることがあります。本記事では、splice() と unshift() を組み合わせてこの処理を実現する方法を解説します。実装の考え方処理の手順は以下の通りです。可変長引数(レストパラメータ)を使って、任意の個数の文字列を受け取る各文字列について indexOf() で配列内の位置を調べる見つかった場合(インデックスが -1 以外の場合)、splice() でその要素を取り出し、unshift() で配列の先頭に挿入するコード例 {

  10. JavaScriptで2つの配列を照合して名前に対応するuidを取得する方法

    JavaScriptでは、文字列の配列とオブジェクトの配列という、異なる形式の2つの配列を扱う場面がよくあります。本記事では、このような2つの配列を照合し、一方の配列の順序に従って他方の配列から対応する値を取り出す方法を解説します。前提となるデータここでは、ユーザー情報を持つオブジェクトの配列 data と、名前(文字列)の配列 names の2つを用意します。const data = [{ name: Kamlesh Kapasi, uid: 123 }, { name: Mahesh Babu, uid: 129 }, { n

  11. JavaScriptで基準点からの距離が近い順に座標点の配列をソートする方法

    問題の概要x座標とy座標という2つのプロパティを持つオブジェクト(点)の配列があるとします。ここで、この配列と基準となる点の座標(x, y)を受け取り、配列内の各点を基準点からの距離が近い順(昇順)に並べ替える関数を作成します。例えば、地図上の複数のスポットの中から「現在地に最も近い場所」を順番に表示したい場合など、実務でもよく使われる処理です。距離の計算式(ユークリッド距離)2次元平面上の2点 (x1, y1) と (x2, y2) の間の最短距離は、次の数学的な式で求められます。$S=\sqrt{((x2-x1)^2+(y2-y1)^2)}$この式を使って各点と基準点との距離を計算し、その

  12. JavaScriptで合計値の各桁の積を再帰的に求める方法

    問題の概要 今回は、任意の個数の引数(数値リテラル)を受け取り、それらを合計したうえで、結果が1桁の数値になるまで各桁の数字を掛け合わせて返す関数をJavaScriptで作成します。 具体例 たとえば、引数として次の3つの数値が渡されたとしましょう。 16, 34, 42 まず、すべての引数を足し合わせます。 16 + 34 + 42 = 92 次に、1桁の数値になるまで、桁ごとの数字を掛け合わせていきます。 9 × 2 = 181 × 8 = 8 1桁の数値「8」が得られたので、この値を関数の戻り値として返します。このような多段階の変換処理は、再帰(recursion)を使うと簡潔に実装でき

  13. JavaScriptで配列内のすべての0(ゼロ)を末尾へ移動するアルゴリズムの実装方法

    はじめに本記事では、配列を受け取り、その中に存在するすべての0(ゼロ)を余分なメモリ領域を使用せずに配列の末尾へ移動させる関数の実装方法を解説します。この問題は、フロントエンドエンジニアの採用面接などでもよく出題される定番のアルゴリズム課題の一つです。ここでは、Array.prototype.splice()とArray.prototype.push()を組み合わせたシンプルなアプローチを紹介します。実装コードconst arr = [34, 6, 76, 0, 0, 343, 90, 0, 32, 0, 34, 21, 54]; const moveZero = (arr) => {

  14. JavaScriptで文字列内のプレースホルダー($0、$1...)を配列の要素で置き換える方法

    今回は、文字列を最初の引数として受け取り、その後に任意の個数の単語を受け取る関数 translate() を作成することを考えてみましょう。 対象となる文字列には、次のように複数の $ 記号(プレースホルダー)が含まれています。 This $0 is more $1 just a $2. ここに、対応する位置を置き換えるための文字列が順に渡されます。 動作イメージ たとえば、関数を次のように呼び出した場合: translate(This $0 is more $1 just a $2., game, than, game); 関数の出力は以下のようになります。 This game

  15. 【JavaScript】Two Sum(二数の和)問題をO(n)で解く効率的なアルゴリズム

    この記事では、Two Sum(二数の和)問題を線形時間 O(n) 以内で解く関数の実装方法を解説します。Two Sum問題とは整数の配列が与えられたとき、その中から合計すると特定のターゲット値になる2つの数を見つけ出すのがTwo Sum問題です。twoSum 関数は、合計がターゲットと一致する2つの数のインデックスを配列で返します。条件を満たす組み合わせが存在しない場合は、空の配列を返します。O(n)で解くためのアプローチ全てのペアを総当たりで調べる方法では計算量が O(n²) になってしまいます。そこで、ハッシュマップ(オブジェクト)を活用します。具体的には、これまで走査した要素を「値 →

  16. JavaScriptで文字列の文字を繰り返して配列を作成する方法

    本記事では、文字列の各文字を順番に取り出しながら、指定した上限(リミット)に達するまで配列を構築する関数をJavaScriptで実装する方法を解説します。要件の確認例えば、文字列「aba」と上限値5が与えられた場合、結果として得られる配列は次のようになります。string = aba、limit = 5 の場合 → [a, b, a, a, b]実装例それでは、実際のコードを見ていきましょう。ポイントは剰余演算子(%)を使うことです。これにより、インデックスが文字列の長さを超えたときに自動的に先頭へ戻り、文字列を繰り返すことができます。 { const arr = []; fo

  17. JavaScriptで配列内の最初の非連続な数値を見つける方法

    本記事では、数値の配列を受け取り、その中で最初に連続性が崩れている(非連続な)数値のインデックスを返す関数をJavaScriptで実装する方法を解説します。 問題の概要 配列内のすべての数値は、公差が1の等差数列(例:3, 4, 5, 6...)として並んでいると仮定します。しかし、その規則に従わない数値が配列の中に存在する場合があり、その違反している数値のインデックスを返す必要があります。 もし配列内のすべての数値が完全に順序通りに並んでいる場合は、-1 を返します。 実装コード それでは、この関数のコードを見てみましょう。 const arr = [1,2,3,4,5,6,8,9,10];

  18. JavaScriptで桁の合計を再帰的に1桁の数字に減らす方法

    数値を受け取り、その各位の数字を合計し、結果が1桁になるまでこの操作を繰り返し、最終的な1桁の数値を返す関数を作成する必要があります。 このような処理は「デジタルルート(Digital Root)」と呼ばれることもあります。例えば 88 の場合は 8 + 8 = 16、さらに 1 + 6 = 7 となり、最終的に 7 を返します。 実装方法は非常にシンプルです。再帰関数を使って、数値が9より大きい(または負の数の場合は-9より小さい)間は各位の数字の合計を求める処理を繰り返します。符号の扱いについてはロジックを二度書かなくて済むよう、別途管理する設計にしています。 コード例 const sum

  19. JavaScriptで文字列をモールス信号に変換する方法

    モールス信号とは?モールス信号(Morse code)は、テキスト文字を「トン(短点)」と「ツー(長点)」と呼ばれる2種類の信号パターンの組み合わせに置き換えて表現する、電気通信における標準的なエンコード方式です。特定の文字列をモールス信号へ変換する関数を作るには、まずすべての英字(A〜Z)とそれに対応するモールス符号をマッピングしたオブジェクトが必要になります。この対応表さえ用意できれば、あとは文字列を1文字ずつ走査しながら新しい文字列を組み立てていくだけで変換が実現できます。以下は、アルファベットをモールス符号にマッピングしたオブジェクトです。モールスコード対応表const morseCo

  20. 【JavaScript】2つの配列を比較してtrue/falseの新しい配列を作成する方法

    JavaScriptでは、2つの配列を比較し、片方の配列(master配列)の要素がもう片方の配列(keys配列)に存在するかどうかを判定したいケースがあります。その結果として、master配列と同じ長さの新しい配列を作成し、keys配列に存在する値にはtrue、存在しない値にはfalseを格納する方法を解説します。 問題の例 たとえば、次のような2つの配列があるとします。 const master = [3,9,11,2,20]; const keys = [1,2,3]; この場合、期待される最終的な配列は以下のようになります。 const finalArray = [true, fals

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