JavaScriptで3次元配列から最大値を取得する方法
JavaScriptでは、flat()メソッドとMath.max()を組み合わせることで、多次元(3D)配列の中から最大の数値を簡単に見つけることができます。
対象となる3次元配列
例として、以下のような入れ子構造を持つ3次元配列を考えます。
var theValuesIn3DArray = [75, [18, 89], [56, [97], [99]]];
この配列には、数値だけでなく配列が何重にもネストされています。そこで、flat(Infinity)を使って配列を完全にフラット化(一次元化)してから、Math.max()で最大値を求めます。
実装例
Array.prototypeに独自のメソッドを追加し、どの配列からでも再利用できる形で実装してみましょう。
var theValuesIn3DArray = [75, [18, 89], [56, [97], [99]]];
// 3次元配列から最大値を取得するメソッドを定義
Array.prototype.findTheLargestNumberIn3dArray = function () {
return Math.max(...this.flat(Infinity));
}
console.log("3次元配列内の最大値は=");
console.log(theValuesIn3DArray.findTheLargestNumberIn3dArray());
コードのポイント
- flat(Infinity): 引数に
Infinityを指定することで、ネストされた階層に関係なく配列をすべて展開します。 - スプレッド演算子(...): 展開後の配列の要素を個別の引数として
Math.max()に渡します。 - Math.max(): 渡された複数の数値の中から最大のものを返します。
プログラムの実行方法
上記のプログラムを実行するには、Node.js環境で以下のコマンドを使用します。
node fileName.js
ここでは、ファイル名をdemo202.jsとして保存したものとします。
実行結果
プログラムを実行すると、以下のような出力が得られます。
PS C:\Users\Amit\javascript-code> node demo202.js 3次元配列内の最大値は= 99
このように、flat(Infinity)とMath.max()を組み合わせれば、どれほど深くネストされた配列でも、わずか1行のコードで最大値を取得できます。
-
JavaScriptで配列内の最頻値とその出現回数を求める方法
JavaScriptでは、リテラル(数値や文字列など)を含む配列を受け取り、その中で最も多く登場する要素(最頻値)と、それが何回繰り返されているかを出力する関数を書くことができます。実装の考え方この処理は、配列の reduce() メソッドを使うことで効率的に実装できます。各要素の出現回数をオブジェクトに記録しながら走査し、同時に最大出現回数を持つ要素を追跡します。同じ出現回数の要素が複数ある場合は、それらすべてを配列に格納して返すようにしています。コード例実際のコードは以下のとおりです。 count[acc[0]]) { return [val]; }
-
JavaScriptで配列から最大の「1度だけ現れる数値」を見つける方法
本記事では、整数の配列を第1引数(かつ唯一の引数)として受け取るJavaScript関数を作成する方法を解説します。この関数の役割は、配列を順番に走査し、その中で一度だけ出現する数値のうち最大のものを見つけ出して返すことです。もし配列内に一意な数値がひとつも存在しない場合は、-1を返す仕様とします。前提となる制約配列の各要素には次の制約が与えられています。つまり、すべての要素は0より大きく101未満であることが保証されています。0 < arr[i] < 101具体例たとえば、入力配列が以下のような場合を考えてみましょう。const arr = [35, 37, 33, 39, 34