JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで配列が等間隔(同じ差分)で増加しているかどうかを判定する方法

配列が等差数列になっているかをチェックする

本記事では、数値の配列を受け取るJavaScript関数の作成方法を解説します。この関数は、隣接する要素同士の差がすべて同じ正の数である場合に true を返し、そうでない場合には false を返します。

つまり、配列が一定の間隔(等差)で増加している、いわゆる「等差数列」になっているかどうかを判定する処理です。

実装コード

以下のコードをご覧ください。

const arr = [4, 7, 10, 13, 16, 19, 22];

const growingMarginally = arr => {
    // 要素が1つ以下の場合は常にtrue
    if(arr.length <= 1){
        return true;
    };
    // 最初の2つの要素から基準となる差分を求める
    const diff = arr[1] - arr[0];
    // 差分が負(減少傾向)の場合はfalse
    if(diff < 0){
        return false;
    }
    // すべての隣接要素間の差分を検証
    for(let i = 0; i < arr.length - 1; i++){
        if (arr[i+1] - arr[i] !== diff){
            return false;
        }
    }
    return true;
};

console.log(growingMarginally(arr));

出力結果

コンソールには次のように出力されます。

true

コードの解説

この関数のロジックは以下の手順で構成されています。

1. 配列の長さチェック: 要素が1つ以下の場合、隣接する要素間の差分が存在しないため、条件を満たすものとして true を返します。

2. 基準差分の算出: 最初の2つの要素(arr[1] - arr[0])の差を基準値として取得し、その差が負の数であれば減少している配列と判断して false を返します。

3. 全要素の比較: ループを使ってすべての隣接要素間の差分を計算し、基準となる差分と一致しない箇所があれば即座に false を返します。最後まで一致していれば、配列は等間隔に増加していることになります。

このアルゴリズムの計算量はO(n)であり、配列の長さに比例した一度の走査で判定できるため、効率的な実装となっています。

  1. JavaScriptで配列の要素を同じ配列内に複製する方法

    JavaScriptでは、concat()メソッドとsort()メソッドを組み合わせることで、既存の配列の要素を同じ配列内に複製することができます。ここでは、実際に動作するサンプルコードを使って、その手順をわかりやすく解説します。 コード例 以下は、配列の要素を同じ配列内に複製するためのコード例です。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <meta name="viewport" cont

  2. 【JavaScript】ユーザーが入力した文字列が配列に含まれているかチェックする方法

    本記事では、ユーザーに文字列を入力してもらうための入力欄を備えたJavaScriptプログラムを作成します。 プログラムは、入力された値が、あらかじめコード内で定義しておいた配列の要素と一致するかどうかを判定します。入力された文字列が配列内に存在すれば画面に「true」を、存在しなければ「false」を表示します。 実装例 この動作を実現するコードは以下のとおりです。 <!DOCTYPE html> <html> <head>     <meta charset="utf-8"> &nb