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

JavaScriptで配列の2要素間をn個の等間隔に分割する関数の実装方法

はじめに

本記事では、parseEqualInterval() という関数を実装します。この関数は、厳密に2つの要素からなる数値配列を第1引数に、数値 n を第2引数として受け取り、元の配列の2つの要素の間に n-1 個の等間隔な値を挿入することで、配列全体を n 個の等しい区間に分割します。

例えば、以下のような動作になります。

// 入力配列
const arr = [12, 48];
// 区間数が4の場合の出力
const output = [12, 21, 30, 39, 48];

このように、12と48の間に3つの値(21、30、39)が挿入され、配列が4つの等間隔に分割されます。それでは、実際のコードを見ていきましょう。

コード例

const arr = [12, 48];
const parseEqualInterval = (arr, interval) => {
    const [first, second] = arr;
    const size = (second-first) / interval;
    for(let i = 1, el = first+size; i < interval; i++, el += size){
        arr.splice(i, 0, Math.round((el + Number.EPSILON) * 100) / 100);
    };
};
parseEqualInterval(arr, 4);
console.log(arr);
parseEqualInterval(arr, 6);
console.log(arr);
parseEqualInterval(arr, 10);
console.log(arr);
parseEqualInterval(arr, 15);
console.log(arr);

仕組みの解説

この関数の処理の流れは以下の通りです。

  • 分割代入const [first, second] = arr; で配列の先頭と2番目の要素を取り出します。
  • ステップ幅の計算(second - first) / interval により、各区間の幅(公差)を求めます。
  • 値の挿入:forループ内で splice() を使用し、計算した値を順番に挿入していきます。
  • 丸め処理:浮動小数点演算の誤差を防ぐため、Number.EPSILON を加算した上で小数第2位に四捨五入しています。

実行結果

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

[ 12, 21, 30, 39, 48 ]
[
    12, 13.5, 15, 16.5,
    18, 19.5, 21, 30,
    39, 48
]
[
    12, 12.15, 12.3, 12.45,
    12.6, 12.75, 12.9, 13.05,
    13.2, 13.35, 13.5, 15,
    16.5, 18, 19.5, 21,
    30, 39, 48
]
[
    12, 12.01, 12.02, 12.03, 12.04,
    12.05, 12.06, 12.07, 12.08, 12.09,
    12.1, 12.11, 12.12, 12.13, 12.14,
    12.15, 12.3, 12.45, 12.6, 12.75,
    12.9, 13.05, 13.2, 13.35, 13.5,
    15, 16.5, 18, 19.5, 21,
    30, 39, 48
]

このように、同じ配列に対して異なる区間数を指定するだけで、柔軟に等間隔分割を行うことができます。splice() を使った挿入処理と浮動小数点誤差への対策を組み合わせることで、シンプルかつ実用的な関数になっています。

  1. JavaScriptのArray.prototype.map()メソッドの使い方を徹底解説

    Array.prototype.map()とは? JavaScriptのArray.prototype.map()メソッドは、配列の各要素に対してコールバック関数を実行し、その戻り値から新しい配列を作成するためのメソッドです。元の配列は変更されないため、安全にデータ変換を行いたい場合に非常に便利です。 構文 arr.map(function callback(currentValue[, index[, array]]) 各引数の意味は以下のとおりです。 currentValue:現在処理している要素の値 index(省略可能):現在処理している要素のインデックス番号 array(省略可能

  2. JavaScriptの基本配列メソッド解説!push・pop・shift・unshift・spliceの使い方を実例付きで紹介

    JavaScriptには、配列を操作するための便利な組み込みメソッドが数多く用意されています。その中でも特によく使われるのが、要素の追加や削除を行う以下の5つの基本メソッドです。 JavaScriptの主要な配列メソッド一覧 メソッド説明 Array.push()配列の末尾に要素を追加します。 Array.pop()配列の末尾から要素を取り除きます。 Array.unshift()配列の先頭に要素を追加します。 Array.shift()配列の先頭から要素を取り除きます。 Array.splice()配列内の任意の位置で要素の追加・削除を行います。 これらのメソッドは、配列の