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

JavaScriptで配列内の最小値のインデックスを取得する方法

本記事では、数値の配列を受け取り、その中で最も小さい数値が格納されているインデックス(位置)を返すJavaScript関数の実装方法を解説します。

実装のポイント

最小値のインデックスを求めるには、reduce() メソッドを活用するのが効果的です。配列を走査しながら、現在までに見つかった最小値とそのインデックスを追跡していきます。

初期値として num には Infinity を設定することで、どのような数値が来ても必ず最初の要素との比較が成立し、正しく最小値を検出できます。

コード例

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

const lowestIndex = arr => {
  const creds = arr.reduce((acc, val, ind) => {
    let { num, index } = acc;
    if (val < num) {
      num = val;
      index = ind;
    }
    return { num, index };
  }, {
    num: Infinity,
    index: -1
  });
  return creds.index;
};

console.log(lowestIndex(arr));

コードの解説

  • アキュムレータ acc{ num, index } というオブジェクトで、これまでに見つかった最小値とそのインデックスを保持します。
  • 各要素 val が現在の最小値 num より小さければ、numindex を更新します。
  • すべての要素を走査し終えた後、最終的な index を返すことで、最小値の位置が得られます。

出力結果

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

6

この配列の場合、最小値は -2 であり、そのインデックスは 6 であるため、正しい結果が返されています。

  1. 【JavaScript】配列内で「値とインデックスが一致する」最初の数値を返す方法

    問題数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、配列の中で「要素の値」と「0から始まるインデックス」が一致している最初の数値を見つけて返します。なお、そのような数値が配列内に少なくとも1つは存在するものとします。コード例以下のコードでは、forループを使って配列を先頭から順番に走査し、各要素の値がそのインデックスと一致した時点で、その値を即座に返しています。const arr = [9, 2, 1, 3, 6, 5]; const findFirstSimilar = (arr = []) => {     f

  2. 【JavaScript入門】配列内で最初の非連続な数値を見つける方法

    はじめに本記事では、JavaScriptを使って「数値の配列の中から、直前の要素と連続していない最初の数値」を見つける方法を解説します。アルゴリズムの練習やコーディング面接の対策としても役立つ基本的な問題です。 問題の定義数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、直前の要素に対して +1 となっていない(連続していない)最初の要素を返さなければなりません。 言い換えると、隣り合う要素同士の差が1以外になる箇所が現れたとき、その箇所の後ろ側の要素を返すという処理です。なお、そのような要素が必ず配列内に1つ以上存在するものとします。 サンプルコード以下は、実