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

JavaScriptで2次元配列の各サブ配列から最大値を抽出して新しい配列を作成する方法

例えば、以下のような数値からなる2次元配列(配列の配列)があるとします。

const arr = [
  [1, 16, 34, 48],
  [6, 66, 2, 98],
  [43, 8, 65, 43],
  [32, 98, 76, 83],
  [65, 89, 32, 4],
];

この2次元配列に対してmap処理を行い、各サブ配列に含まれる最大値を要素として持つ新しい配列を返す関数を作成する必要があります。

上記の配列の場合、期待される出力は次のとおりです。

const output = [
    48,
    98,
    65,
    98,
    89
];

実装例

以下は、各サブ配列から最大の要素を取得するコードです。

const arr = [
    [1, 16, 34, 48],
    [6, 66, 2, 98],
    [43, 8, 65, 43],
    [32, 98, 76, 83],
    [65, 89, 32, 4],
];
const constructBig = arr => {
    return arr.map(sub => {
        const max = Math.max(...sub);
        return max;
    });
};
console.log(constructBig(arr));

コードの解説

このコードでは、Array.prototype.map()メソッドを使って外側の配列を反復処理しています。各サブ配列に対しては、スプレッド構文(...)でサブ配列の要素を展開してMath.max()に渡すことで、そのサブ配列内の最大値を求めています。

map()は各要素の処理結果を新しい配列として返すため、元の2次元配列は変更されず、最大値だけを集めた新しい配列を安全に生成できます。

出力結果

コンソールには次のような出力が表示されます。

[ 48, 98, 65, 98, 89 ]
  1. JavaScriptで配列の値に基づいて文字列の文字をシフトする方法

    本記事では、小文字の英字のみで構成された文字列に対して、配列内の数値に従って各文字をシフトするJavaScript関数の実装方法を解説します。 問題の概要 まず、「1単位のシフト」を次のように定義します。ある文字を、アルファベット順でその直後の文字に置き換えること。これには循環(ラップアラウント)も含まれます。つまり、「z」の次の文字は「a」となります。 今回作成する関数は、以下の2つの引数を受け取ります。 str: 小文字英字のみを含む文字列(第1引数) arr: strと同じ長さを持つ数値の配列(第2引数) 関数は、元の文字列の各文字を、配列arr内の同じ位置にある数値の分だけ

  2. JavaScriptで2次元配列を指定した行数・列数に再形成する方法

    問題JavaScriptの関数を作成します。この関数は、第1引数として数値の2次元配列 arr を受け取り、続く2つの引数として、変換後の行列の行数と列数を表す数値 r および c を受け取ります。関数は、入力配列と同じ行優先(row-traversing)順序で要素を並べ替えたうえで、指定された行数と列数を持つ新しい2次元配列を生成して返す必要があります。たとえば、関数への入力が次の場合:const arr = [ [6, 7], [8, 9] ]; const r = 1, c = 4;期待される出力は次のとおりです。const output = [[6, 7, 8, 9]];出力