JavaScriptのreduce()メソッドで渡された複数の配列から最大値を取得して返す方法
JavaScriptで渡された複数の配列からそれぞれの最大値を取り出したい場合は、reduce()メソッドとMath.max()関数を組み合わせると簡単に実現できます。以下に具体的なコード例を示します。
const getBiggestNumberFromArraysPassed = allArrays => allArrays.reduce(
(result, currentArray) => {
result.push(Math.max(...currentArray));
return result;
},
[]
);
console.log(getBiggestNumberFromArraysPassed([[45,78,3,1],[50,34,90,89],[32,10,90,99]]));
プログラムの実行方法
上記のプログラムを実行するには、Node.jsがインストールされた環境で、次のコマンドを使用します。
node fileName.js
ここでは、ファイル名を demo94.js として保存しています。
実行結果
上記のコードを実行すると、次のような出力が得られます。
PS C:\Users\Amit\JavaScript-code> node demo94.js [ 78, 90, 99 ]
コードの解説
Math.max(...currentArray):スプレッド構文(...)でサブ配列を展開し、その中から最大値を求めます。reduce():初期値として空の配列[]を渡し、各サブ配列の最大値を順番に追加(push)していきます。- 最終的に、元のネストされた配列と同じ要素数の「最大値だけをまとめた新しい配列」が生成されます。
このようにreduce()は合計の計算だけでなく、配列のデータを別の形式に変換しながら組み立てる処理にも非常に便利なメソッドです。ネストされた配列から特定の値だけを抽出したい場合などに、ぜひ活用してみてください。
-
OpenCVのイテレータメソッドを使って画像の色数を減らす方法
OpenCVには、C++のSTL(標準テンプレートライブラリ)と互換性のある「Mat_イテレータ」クラスが用意されています。このクラスを利用すると、画像内の各ピクセルに非常に簡単かつ効率的にアクセスすることができます。イテレータを使用するには、まず「Mat_::iterator」のようにMat_イテレータクラスのオブジェクトを作成します。「Mat」の直後にアンダースコア(_)を付けて「Mat_」と記述するのは、これがテンプレートメソッドであるためです。テンプレートメソッドでは、オブジェクト生成時に戻り値となるデータ型を明示的に指定する必要があります。そこで本記事では、BGRの3チャンネルを持つ
-
OpenCVでポインタを使った効率的な色数削減の実装方法
画像処理では、画像に対して何らかの計算を行います。具体的にはピクセル単位で演算を実行するため、ピクセル数が増えるほど計算にかかる時間も長くなります。計算時間を短縮するには、画像を効率的に走査(スキャン)することが重要です。本記事では、ポインタを使用した効率的な画像走査ループの実装方法を解説します。カラー削減の仕組みここでは、カラー削減戦略を例に挙げて、ピクセル走査のプロセスを見ていきましょう。RGB画像などのカラー画像は3つのチャンネルで構成されています。各チャンネルは同じ数のピクセルを持ちますが、それぞれ対応する異なる値を格納しており、その値は8ビットのunsigned char型です。した