【JavaScript】数値をn個の要素に分割して配列として取得する方法
本記事では、2つの数値 m(合計値)と n(要素数)を受け取り、「すべての要素を足し合わせると m になる、サイズ n の配列」を返すJavaScript関数の作成方法を解説します。
基本的な考え方
もっともシンプルなアプローチは、合計値を要素数で均等に割ることです。たとえば「合計5を8個の要素に分割する」場合、5 ÷ 8 = 0.625 となるため、各要素に 0.625 を格納すれば要件を満たせます。
サンプルコード
以下が実際の実装例です。
const len = 8;
const sum = 5;
const splitNumber = (len, sum) => {
const res = [];
for(let i = 0; i < len; i++){
res.push(sum / len);
};
return res;
};
console.log(splitNumber(len, sum));
処理の流れ
- 結果を格納するための空配列
resを用意します。 forループで指定された回数(len回)だけ繰り返し処理を行います。- 各ループで
sum / lenの計算結果を配列に追加します。 - 完成した配列を返します。
出力結果
コンソールへの出力は以下のようになります。
[ 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625 ]
8個の 0.625 を合計すると 5 になり、確かに元の数値と一致していますね。
より簡潔な書き方:Array.fill() を活用
fill() メソッドを使えば、ループ処理を書かずに1行で同じことが実現できます。
const splitNumber = (len, sum) => new Array(len).fill(sum / len); console.log(splitNumber(8, 5)); // [0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625, 0.625]
注意点
- この方法では小数を含む均等分割になります。整数のみの配列が必要な場合は、別途丸め処理や残りの調整ロジックを実装する必要があります。
- 浮動小数点数の計算では誤差が生じる可能性があるため、厳密な合計チェックを行う場合は
toFixed()や誤差許容範囲の比較を検討してください。
まとめ
数値をn個の要素に分割する場合は、単純に「合計値 ÷ 要素数」を各要素に格納するのが基本です。用途に応じて for ループ版と fill() 版を使い分けるとよいでしょう。
-
JavaScriptの配列lengthプロパティとは?使い方とサンプルコードを解説
JavaScriptのlengthプロパティは、配列に格納されている要素の総数(配列の長さ)を取得したり、設定したりできる便利なプロパティです。配列操作において最もよく使われるプロパティの一つであり、ループ処理や条件分岐など、さまざまな場面で活用されます。 lengthプロパティの基本 lengthプロパティは、以下のような特徴を持っています。 配列内の要素数を数値として返す 値を代入することで配列の長さを変更できる(短くすると要素が削除される) インデックスは0から始まるため、最後の要素のインデックスは「length - 1」になる サンプルコード 以下は、lengthプロパティを使って
-
JavaScriptのlengthプロパティで配列オブジェクトの長さを取得する方法
JavaScriptにおけるlengthプロパティとはJavaScriptのlengthプロパティは、文字列や配列などのオブジェクトが持つ要素数(サイズ)を返すために使用されます。配列の場合は格納されている要素の個数、文字列の場合は文字数を取得できます。ここでは、文字列と配列オブジェクトの長さをlengthプロパティで取得するサンプルコードを紹介します。サンプルコード以下の例では、ボタンをクリックすると配列の長さが画面に表示される仕組みを実装しています。<!DOCTYPE html> <html lang="ja"> <head> <