-
JavaScriptで特殊な並び順の配列からターゲット文字列のインデックスを検索する方法
問題概要 ここで考えるのは、検索対象となる単語 target と単語の配列を受け取るJavaScript関数です。配列内の単語はすべてユニークであり、ターゲットが必ず含まれていることが保証されています。また、配列は以下の3つの基準によってソートされています。 文字数が短い順(昇順) 大文字の数が多い順(降順) 条件が同じ場合は自然順(通常の辞書順) 関数の目的は、この一見「奇妙」な並び順の配列の中からターゲットを探し出し、そのインデックス(0始まり)を返すことです。ターゲットは必ず存在するため、見つからないケースを考慮する必要はありません。 解き方のポイント ソートのルールが複雑に見え
-
JavaScriptで数値の配列に対してべき乗演算を実行する方法
問題 私たちは、偶数の長さを持つ整数の配列 arr を引数として受け取る JavaScript 関数を記述する必要があります。 ここで、次のような数値 num を考えます − num = (arr[0] * arr[0] + arr[1] * arr[1]) * (arr[2] * arr[2] + arr[3] * arr[3]) * … * (arr[n-2] * arr[n-2] + arr[n-1] * arr[n-1]) このとき n は配列の長さを表します。つまり、配列を隣り合う2つの要素ごとのペアに分割し、各ペアの平方和をすべて掛け合わせた値が num となります。 この関数は
-
JavaScriptで点Qを中心とした点Pの対称点(反射点)を求める方法
点対称とは「点反射」や「点対称」とは、幾何学における基本的な概念の一つです。中点Qに対して特定の位置にある点Pには、Qから同じ距離にありながら反対方向に位置する対応する点P1が必ず存在します。問題ここでは、2次元平面上の2つの点を表すオブジェクトPとQを受け取るJavaScript関数を作成します。この関数は、点Qを中心とした点Pの対称点を計算して返す必要があります。解法の考え方対称点を求める数学的なアプローチは非常にシンプルです。点Pと点Qの各座標の差を求め、その差を点Qの座標から引くことで、反対側に位置する対称点の座標が得られます。数式で表すと次のようになります。P1 = 2Q − P例以
-
JavaScriptで生年月日から星座を判定する方法
この記事では、Dateオブジェクトを受け取り、その日付に対応する12星座を返すJavaScript関数の実装方法を解説します。誕生日から星座を自動的に判定したい場合に役立つ、シンプルで実用的なテクニックです。 問題 日付オブジェクトを引数として受け取るJavaScript関数を作成します。関数は、受け取った日付(誕生日)に該当する星座を返す必要があります。 コード例 以下が実際のコードです。 const date = new Date(); // 2021年4月2日に実行した場合の例 const findSign = (date) => { // 各月の星座が切り替わる「境
-
JavaScriptで2次元平面上の2点間の距離を求める方法
問題x・yプロパティを持つ2つのオブジェクト(平面上の2点を表す)を受け取り、それらの点間の距離を計算して返すJavaScript関数を作成する必要があります。距離の計算式2次元平面上の2点間の距離は、ユークリッド距離の公式を使って求められます。d = √((x₂ − x₁)² + (y₂ − y₁)²)つまり、x座標の差の2乗とy座標の差の2乗を足し合わせ、その平方根を取ればよいことになります。JavaScriptでは Math.sqrt() メソッドと指数演算子(**)を組み合わせることで、この計算を簡単に実装できます。実装例以下が実際のコードです −const a = {x: 5, y:
-
JavaScriptでバイナリ配列(2進数)を10進数に変換する方法
問題0と1のみで構成されるバイナリ配列(2進数の配列)を受け取るJavaScript関数を作成する必要があります。この関数は、まず配列内のすべてのビットを1つの2進数として連結し、その2進数に対応する10進数の値を返すものとします。例えば、[1, 0, 1, 1]という配列が与えられた場合、これを「1011」という2進数とみなし、対応する10進数である「11」を返します。解決策:累乗を使った実装各ビットの位置に応じた2の累乗を計算し、合計することで10進数への変換を行います。以下がそのコード例です。const arr = [1, 0, 1, 1]; const binaryArrayToNu
-
JavaScriptで時速kmを毎秒cm(cm/s)に変換する方法
この記事では、時速キロメートル(km/h)で表された速度を受け取り、それを毎秒センチメートル(cm/s)に変換して返すJavaScript関数の実装方法を解説します。課題数値(km/h単位の速度)を引数として受け取り、同等の速度をcm/s単位で返すJavaScript関数を作成する必要があります。変換の考え方km/hをcm/sに変換するには、以下の換算値を使用します。1時間 = 3600秒1キロメートル = 100,000センチメートルしたがって、変換式は次のようになります。速度(cm/s)= km/h × 100000 ÷ 3600サンプルコード以下がそのコード例です。const kmph
-
JavaScriptで配列内の整数の符号を反転させる方法
問題JavaScriptで、正と負の整数が混在する配列を受け取る関数を書く必要があります。この関数は、配列内のすべての正の数を負の数に、すべての負の数を正の数に変換し、その結果の配列を返すものとします。なお、0の符号を反転しても0のままである点に注意してください。コード例以下が実際のコードです。 { const res = []; for(let i = 0; i < arr.length; i++){
-
【JavaScript】配列から特定の数値で割り切れる要素だけを抽出するdivisibleBy()関数の作り方
今回は、数値の配列と1つの数値を引数として受け取り、その数値で割り切れる要素だけを含む新しい配列を返すJavaScript関数「divisibleBy()」の実装方法を解説します。 問題の概要 次のような要件を持つ関数を作成します。 第1引数:数値が格納された配列 第2引数:判定に使う1つの数値 戻り値:第2引数の数値で割り切れる要素のみを含む、フィルタリング済みの配列 実装のポイント 配列の要素を絞り込むには、Array.prototype.filter()メソッドが便利です。また、ある数が別の数で割り切れるかどうかは、剰余演算子(%)を使って「余りが0かどうか」を判定することで確認
-
【JavaScript】配列の部分和(後方からの累積和)を求める方法を解説
問題 数値の配列を受け取り、新しい配列を構築して返すJavaScript関数を作成します。戻り値となる配列の各要素には、元の配列において「その位置より右側にあるすべての要素(自分自身を含む)」の合計が格納されます。 コード例 以下が実際のコードです。 const arr = [5, 6, 1, 3, 8, 11]; const partialSum = (arr = []) => { let sum = arr.reduce((acc, val) => acc + val); const res = []; let x = 0; if(arr.le
-
JavaScriptでString.prototype.split()のようなカスタム関数を自作する方法
課題JavaScriptのStringクラスのプロトタイプオブジェクトに、split関数と同様の動作をするカスタム関数を実装してみましょう。この関数は、区切り文字(セパレーター)となる文字列を唯一の引数として受け取ります(元のsplit関数は2つの引数を取りますが、ここではシンプルに1つだけにします)。そして、受け取った文字列をセパレーターで分割し、その各部分を要素として持つ配列を返す必要があります。実装例以下が実際のコードです。const str = this is some string;String.prototype.customSplit = (sep = ) => {&nbs
-
JavaScriptを使用して指定された項数までの数列の合計を求める方法
問題 次のような数列を考えてみましょう。 数列: 1/1 , 1/(1×2) , 1/(1×2×3) , 1/(1×2×3×4) , … この数列の第n項は、次の式で表されます。 1 / (1 × 2 × 3 × … × n) つまり、各項は「1をその項番号の階乗(n!)で割った値」になっています。本記事では、数値nを受け取り、この数列の最初のn項の合計を返すJavaScript関数を作成します。 解き方のアプローチ 合計を求める手順は以下のとおりです。 合計を保持する変数を0で初期化します。 ループ内で階乗の値を順次更新しながら、その都度「1 ÷ 階乗」を合計に加算していきます。 n項
-
JavaScriptで配列の最小値と最大値を返す関数の作成方法
問題配列を受け取り、新しい配列を返すJavaScript関数を作成する必要があります。戻り値となる配列の最初の要素には入力配列の最小値を、2番目の要素には最大値を格納します。コード例以下のコードでは、Array.prototype.reduce()メソッドを使用して、配列を一度だけ走査しながら最小値と最大値を同時に求めています。const arr = [56, 34, 23, 687, 2, 56, 567]; const findMinMax = (arr = []) => { const creds = arr.reduce((acc,
-
JavaScriptで配列のすべての値が指定した上限値より小さいかを確認する方法
問題数値の配列と1つの数値を引数として受け取るJavaScript関数を作成する必要があります。この関数は、配列内のすべての要素が第2引数として渡された数値(上限値)よりも小さい場合に true を、それ以外の場合は false を返すものとします。解決アプローチこのような判定には、配列の every() メソッドを使うのが最もシンプルで効率的です。every() メソッドは、配列内のすべての要素が指定したテスト条件を満たしているかどうかを判定し、ブール値(true / false)を返します。コード例以下が実際のコードです。const arr = [5, 34, 23, 14, 78, 45
-
JavaScriptでArray.prototype.includes()と同等のカスタム関数を自作する方法
JavaScriptでは、Array.prototype.includes()メソッドを使うことで、配列に特定の値が含まれているかどうかを簡単に判定できます。しかし、このメソッドの内部動作を理解するために、同じ機能を持つカスタム関数を自作してみるのは非常に良い学習になります。 課題 JavaScript関数を1つ作成し、それをArray.prototypeオブジェクトに登録します。この関数はリテラル値を1つ引数として受け取り、その値が呼び出し元の配列内に存在する場合はtrue、存在しない場合はfalseを返す必要があります。 実装コード 以下がその実装例です。 const arr = [1,
-
JavaScriptで数値と文字列が混在する配列の合計を求める方法
問題整数と文字列形式の数字(例えば 34 や 23 など)が混在した配列を受け取り、その配列内のすべての値を合計して、合算された新しい数値を返すJavaScript関数を作成する必要があります。文字列形式の数字も数値として扱い、すべて足し合わせるのがポイントです。解決アプローチこの問題を解く最もシンプルな方法は、各要素に単項プラス演算子「+」を適用することです。単項プラス演算子は文字列を数値に変換できるため、文字列と整数が混在する配列でもそのまま合計計算ができます。以下はその実装コードです。 { let sum = 0; for(let i = 0; i < arr.lengt
-
JavaScriptを使ってオブジェクトの配列から平均年齢を求める方法
問題ある人物たちのデータを含むオブジェクトの配列を引数として受け取るJavaScript関数を作成する必要があります。作成する関数は、各オブジェクトが持つ age プロパティの平均値を計算して返すシンプルなものです。アプローチここでは、配列の reduce() メソッドを活用します。reduce() を使うことで、配列を一度だけ走査しながら「年齢の合計(sum)」と「人数(count)」を同時に集計できます。最後に合計を人数で割れば平均年齢が求まります。また、空の配列が渡された場合に0除算が発生しないよう、防御的な処理も加えています。コード例実際のコードは以下の通りです。const peopl
-
JavaScriptでオブジェクトの配列に全大陸が存在するかを確認する方法
問題ある人々が所属する大陸に関するデータを含む、オブジェクトの配列を受け取るJavaScript関数を作成する必要があります。この関数は、配列内に6つの異なる大陸(アフリカ、南アメリカ、北アメリカ、ヨーロッパ、アジア、オーストラリア)がすべて見つかった場合には true を返し、そうでない場合には false を返すものとします。コード例以下がその実装コードです − { return obj.continent; }); for(let i = 0; i < listed.length; i++){ const cont = listed[
-
JavaScriptで数字を0と1に変換してバイナリ文字列を生成する方法
問題数字のみで構成された文字列を受け取るJavaScript関数を作成します。この関数は、5未満の各桁の数字を「0」に、5以上の数字を「1」に置き換え、変換後の文字列を返す必要があります。つまり、与えられた数字列を簡易的なバイナリ表現へとマッピングする処理を行います。実装例以下に実際のコード例を示します。const str = 262355677834342; const convert = (str = ) => { let res = ; for(let i = 0; i < str.length; i++){
-
JavaScriptでn番目の偶数を返す関数を実装する方法
問題 今回は、数値 n を引数として受け取り、自然数の中で n番目の偶数 を返すJavaScript関数を作成します。 n番目の偶数は、0から数え始めると「0, 2, 4, 6, …」という並びになります。つまり、n番目の偶数は次の式で求められます。 n番目の偶数 = 2 × (n − 1) 考え方 コードでは、まず引数を2倍した値(次の偶数)を求め、そこから2を引くことで目的の偶数を計算しています。この方法なら、ループ処理を使わずにO(1)の定数時間で結果を得られるのがポイントです。 コード例 以下が実装コードです。 { // nを2倍して