【JavaScript】配列の各サブ配列の合計を計算して新しい配列を返す方法
問題の概要
数値の集合を含む複数の配列(ネストされた配列)が与えられたとき、対応する各サブ配列内のすべての数値の合計を要素とする配列を返す関数を作成します。
例
たとえば、入力配列が次のようになっているとします。
const numbers = [
[1, 2, 3, 4],
[5, 6, 7],
[8, 9, 10, 11, 12]
];この場合、関数の出力は次のようになるはずです。
const output = [10, 18, 50];
実装方法
この問題は、Array.prototype.reduce() メソッドを組み合わせることで簡潔に解決できます。まず、1つの配列の合計を計算する関数を定義し、それを各サブ配列に順番に適用していきます。
const numbers = [
[1, 2, 3, 4],
[5, 6, 7],
[8, 9, 10, 11, 12]
];
const sum = arr => arr.reduce((acc, val) => acc+val);
const sumSubArray = arr => {
return arr.reduce((acc, val) => {
const s = sum(val);
acc.push(s);
return acc;
}, []);
};
console.log(sumSubArray(numbers));コードの解説
まず、sum 関数は reduce() を使って、渡された配列内の全要素を合計します。次に、sumSubArray 関数は外側の配列に対して reduce() を実行し、初期値として空の配列を用意します。各サブ配列に対して sum 関数を呼び出して合計を求め、その結果を結果配列に追加していきます。最終的に、すべてのサブ配列の合計を格納した配列が返されます。
出力
コンソールには次のように出力されます。
[ 10, 18, 50 ]
-
JavaScriptで配列内の正の数だけを合計する方法
問題正と負の数値が混在した配列を受け取り、その中に含まれる正の数すべての合計を計算して返すJavaScript関数を作成する必要があります。たとえば、[5, -5, -3, -5, -7, -8, 1, 9] という配列が与えられた場合、正の数は 5、1、9 の3つなので、期待される出力は 15 となります。解決コード以下がその実装例です。const arr = [5, -5, -3, -5, -7, -8, 1, 9]; const sumPositives = (arr = []) => { const isPositive = num => type
-
JavaScriptで3つの配列に共通する要素の合計を求める方法
問題今回は、3つの数値型配列を引数として受け取るJavaScript関数を作成します。この関数は、3つの配列すべてに共通して存在する要素だけを抜き出し、それらの合計値を返す必要があります。たとえば、次のような配列が与えられた場合を考えてみましょう。const arr1 = [4, 4, 5, 8, 3]; const arr2 = [7, 3, 7, 4, 1]; const arr3 = [11, 0, 7, 3, 4];この場合、3つの配列すべてに存在するのは「4」と「3」なので、期待される出力は 4 + 3 = 7 となります。解決策のコード例以下がその実装コードです。 { le