何が起こったか
最近、問題を解決している際に、JavaScriptで配列の最大値を取得する必要がありました。具体的には、LeetCode #300 Longest Increasing Subsequenceの問題に取り組んでいました。
しかし、JavaScriptはC#のLINQ やJavaのStream、Python 3の多機能なmax関数と比較すると、伝統的なforループによる比較が主流であるという印象がまだ残っているかもしれません。
そこで今日は、JavaScriptを使用して配列内の最大値を取得する3つの異なる方法をまとめてみましょう。
解決方法
解決方法1 – forループ
const arr = [12,20,8,44,31]; const max = arr[0]; for(let i=1; i<arr.length; i++){ if(arr[i]>max){ max = arr[i]; } }
確かに、これはおそらく最も一般的に使用されるアプローチです。配列の最初の要素を仮の最大値として設定し、forループを使用して各要素を比較する方法です。
ES6の機能がサポートされていない場合、この方法が唯一の選択肢です。constやletはES6の構文であるため、varに置き換えることを忘れないでください。
解決方法2 – Array.reduce
const arr = [12,20,8,44,31]; const max = arr.reduce((max, current) => { return current > max ? current : max; }, arr[0]);
このコードスニペットでは、ES6のreduce構文を使用して反復的な計算を行います。
この関数では、各要素が現在の最大値と比較されます。現在の要素が現在の最大値より大きい場合、新しい最大値となります。最終的には最大値が返されます。
初期値については、提供されていない場合、reduceは配列の最初の要素をデフォルト値として使用します。
解決方法3 – Spread構文とMath.Max
const arr = [12,20,8,44,31]; const max = Math.max(...arr);
これは、ES6で導入されたSpread構文を利用した最も短い方法です。
メインの概念は、配列を個々の要素に展開して、それらをMath.Max関数の引数として渡すことです。Math.Max構文は任意の数の引数を受け入れるため、この組み合わせを効果的に使用できます。
数年間プログラミングをしており、主にバックエンド開発に焦点を当ててきました。しかし最近、フロントエンドのJavaScript ES6にはまだ探索していない便利な機能が多数あることに気付きました。少し後悔しています。
参考文献
💔 この記事全体は独自に書かれ、テストされました。引用や参照は自由ですが、全文をそのままコピーすることは避けてください。
🧡 ポストを共有してチームをサポートしていただければ幸いです。ありがとうございます。
✅ この記事に関する問題がありましたら、お気軽にお問い合わせください。
0 件のコメント:
コメントを投稿