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

JavaScriptで配列から指定した数値に最も近い値を検索する方法

JavaScriptでは、数値の配列と基準となる数値を引数として受け取り、その中から最も差が小さい(最も近い)値を返す関数を作成できます。

この記事では、reduce()メソッドとMath.abs()を活用して、配列内から指定した数値に最も近い値を効率的に見つける方法を解説します。

実装コード

const arr = [3, 56, 56, 23, 7, 76, -2, 345, 45, 76, 3];
const num = 37;

const findClosest = (arr, num) => {
  const creds = arr.reduce((acc, val, ind) => {
    let { diff, index } = acc;
    const difference = Math.abs(val - num);
    if (difference < diff) {
      diff = difference;
      index = ind;
    }
    return { diff, index };
  }, {
    diff: Infinity,
    index: -1
  });
  return arr[creds.index];
};

console.log(findClosest(arr, num));

出力結果

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

45

コードの解説

  • 初期値: アキュムレータのdiffInfinity(無限大)、indexを-1で初期化します。これにより、最初の要素との比較が必ず成立します。
  • 差の計算: Math.abs(val - num)で各要素と対象の数値との絶対的な差(距離)を求めます。
  • 比較と更新: 現在計算した差が、これまで記録した最小の差より小さい場合、その差とインデックスを更新します。
  • 戻り値: 最終的に記録されたインデックスに対応する配列の要素を返します。

この例では、37に最も近い配列の要素は45であるため、「45」が出力されます。
同様に、複数の候補が同じ差を持つ場合は、先に出現した要素が優先される点にも注意してください。

  1. JavaScriptで配列から指定した数に最も近い値を取得する方法

    はじめに本記事では、JavaScriptを使って「配列の中から指定した数値に最も近い値を見つけて返す」関数の実装方法を解説します。この関数は、第1引数として数値の配列を、第2引数として単一の数値を受け取ります。そして、配列の中から第2引数で指定された数値に最も近い要素を探し出し、その値を返します。問題の例例えば、以下のような配列と数値が与えられた場合を考えてみましょう。const arr = [34, 67, 31, 53, 89, 12, 4]; const num = 41;この場合、41に最も近い配列の要素は 34 となるため、出力結果は 34 になります。実装コード以下が実際のコード例

  2. JavaScriptで配列内の「値と出現頻度が一致する整数」を見つける方法

    本記事では、整数の配列を引数に受け取り、「その値自身と出現回数が一致する整数」が存在するかどうかを判定する JavaScript 関数の実装方法を解説します。例えば、ある整数 4 が配列内にちょうど 4 回出現している場合、この整数は条件を満たしています。少なくとも 1 つでも該当する整数が存在すればその値を返し、存在しない場合は -1 を返します。問題の概要以下のような配列を考えてみましょう。const arr = [3, 4, 3, 8, 4, 9, 7, 4, 2, 4];各要素の出現回数を数えると次のようになります。2: 1 回3: 2 回4: 4 回 ← 値と出現回数が一致!7: 1