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

JavaScriptで配列が単調増加・単調減少しているかを判定する方法

数値の配列を受け取り、その配列が狭義単調増加(厳密に増加し続ける)または狭義単調減少(厳密に減少し続ける)のいずれかであれば true を、そうでなければ false を返すJavaScript関数を作成する方法を解説します。

数学において、単調増加関数とは、グラフ上の値が常に増加し続ける関数のことを指します。同様に、単調減少関数とは、グラフ上の値が常に減少し続ける関数のことです。

この判定を実現するポイントは、隣接する3つの要素を順に取り出し、その「傾き」の向きが一貫しているか(すべて正またはすべて負)を確認することです。それでは、実際のコードを見ていきましょう。

サンプルコード

const arr = [12, 45, 6, 4, 23, 23, 21, 1];
const arr2 = [12, 45, 67, 89, 123, 144, 2656, 5657];
const sameSlope = (a, b, c) => (b - a < 0 && c - b < 0) || (b - a > 0 && c - b > 0);
const increasingOrDecreasing = (arr = []) => {
    if(arr.length <= 2){
        return true;
    };
    for(let i = 1; i < arr.length - 1; i++){
        if(sameSlope(arr[i-1], arr[i], arr[i+1])){
            continue;
        };
        return false;
    };
    return true;
};
console.log(increasingOrDecreasing(arr));
console.log(increasingOrDecreasing(arr2));

このコードでは、sameSlope 関数が連続する3つの要素 a、b、c を受け取り、(b - a) と (c - b) の符号が一致しているかどうかを判定します。これにより、配列の途中で増加から減少(またはその逆)へ切り替わっていないかを検出できます。

また、要素数が2以下の配列は必ず単調増加または単調減少とみなせるため、即座に true を返します。

実行結果

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

false
true

1つ目の配列 arr は 45 → 6 の箇所で増加から減少へ切り替わっているため false が、2つ目の配列 arr2 は最初から最後まで一貫して増加しているため true が返されます。

  1. JavaScriptの自己実行関数(IIFE)の目的とは?使い方をわかりやすく解説

    自己実行関数の主な目的は、その関数内で宣言された変数が関数の内部でのみ有効になるという点にあります。自己実行関数の中で宣言された変数は、デフォルトでは外部からアクセスできず、関数内部のコードからのみ参照可能です。これにより、グローバルスコープの汚染を防ぎ、他のコードとの変数名の衝突を回避できます。このような関数は「即時実行関数式(IIFE:Immediately Invoked Function Expression)」と呼ばれ、定義された瞬間に自動的に実行される関数です。基本の構文自己実行関数の基本的な構文は以下のとおりです。(function() {   &n

  2. 【初心者向け】JavaScriptでボタンクリック時に数値を加算するSum関数の作り方

    はじめに 本記事では、ボタンをクリックするたびに指定した値を加算していき、結果を画面に表示するシンプルなJavaScriptの「Sum関数」の実装方法を解説します。onclickイベントとparseInt()を組み合わせることで、わずか数行のコードで動的な加算処理を実現できます。 ボタンの準備 まず、以下のようなHTMLボタンを用意します。 <button type=button onclick=addTheValue(10)>Sum</button> このボタンがクリックされると、引数として10を渡して関数 addTheValue(10) が呼び出されます。つま