JavaScriptで数値をk個の要素に分割した配列を生成する方法
本記事では、2つの数値(合計値 m と 配列の長さ k)を受け取り、「要素の合計が m になる長さ k の配列」を返すJavaScript関数の実装方法を解説します。
考え方:均等に分割する
最もシンプルなアプローチは、合計値を要素数で割った値(sum / len)をすべての要素に格納する方法です。これにより、各要素が等しい値となり、その合計は必ず元の数値と一致します。
サンプルコード
実際のコードは以下の通りです。
const len = 30;
const sum = 121;
const splitNumber = (len, sum) => {
const res = [];
for (let i = 0; i < len; i++) {
res.push(sum / len);
}
return res;
};
console.log(splitNumber(len, sum));
出力結果
コンソールへの出力は次のようになります。30個の要素がすべて 121 ÷ 30 ≒ 4.0333... となっていることが確認できます。
[
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333,
4.033333333333333, 4.033333333333333
]
より簡潔に書くなら:Array.fromを活用
Array.from() を使えば、forループを書かずに同じ処理を1行で実現できます。
const splitNumber = (len, sum) =>
Array.from({ length: len }, () => sum / len);
console.log(splitNumber(30, 121));
この方法では、第1引数に { length: len } を渡して配列の長さを指定し、マップ関数内で sum / len を返すことで、均等に分割された配列を生成しています。
注意点
この手法は浮動小数点数を扱うため、結果には丸め誤差が含まれる場合があります。金額計算など厳密な精度が求められる場面では、toFixed() や整数演算への変換を組み合わせて対応してください。
-
JavaScriptの配列lengthプロパティとは?使い方とサンプルコードを解説
JavaScriptのlengthプロパティは、配列に格納されている要素の総数(配列の長さ)を取得したり、設定したりできる便利なプロパティです。配列操作において最もよく使われるプロパティの一つであり、ループ処理や条件分岐など、さまざまな場面で活用されます。 lengthプロパティの基本 lengthプロパティは、以下のような特徴を持っています。 配列内の要素数を数値として返す 値を代入することで配列の長さを変更できる(短くすると要素が削除される) インデックスは0から始まるため、最後の要素のインデックスは「length - 1」になる サンプルコード 以下は、lengthプロパティを使って
-
JavaScriptのlengthプロパティで配列オブジェクトの長さを取得する方法
JavaScriptにおけるlengthプロパティとはJavaScriptのlengthプロパティは、文字列や配列などのオブジェクトが持つ要素数(サイズ)を返すために使用されます。配列の場合は格納されている要素の個数、文字列の場合は文字数を取得できます。ここでは、文字列と配列オブジェクトの長さをlengthプロパティで取得するサンプルコードを紹介します。サンプルコード以下の例では、ボタンをクリックすると配列の長さが画面に表示される仕組みを実装しています。<!DOCTYPE html> <html lang="ja"> <head> <