⊗jsSpOtLO 272 of 294 menu

JavaScriptにおける循環操作の最適化

軽い操作であっても、ループ内で何度も繰り返されると多くのリソースを消費する可能性があります。

例を見てみましょう。 ある配列が与えられているとします:

let arr = [1, 2, 3, 4, 5, 6];

この配列要素の平均値を求めてみましょう。 そのためには、要素の合計を求め、それを要素数で割る必要があります。 あるプログラマーがこの問題を次のように解決したとします:

let avg = 0; for (let elem of arr) { avg += elem / arr.length; } console.log(avg);

この解決策の問題点を考えてみましょう。 技術的にはコードは正しく動作し、正しい答えを返します。 数学的には、合計全体を数で割ることも、各加数を数で割ることも正しいからです。

しかし、別の問題が生じます。 問題は、配列内の要素の数だけ除算を実行する点です。 結果として、不要な操作を大量に行うことになります。 なぜなら、除算は最後に1回だけ、見つかった合計全体を割るようにすれば済むからです。

コードを最適化してみましょう:

let sum = 0; for (let elem of arr) { sum += elem; } let avg = sum / arr.length; console.log(avg);

次のコードを最適化してください:

for (let i = 1900; i <= 2100; i++) { let curr = new Date; let date = new Date(i, curr.getMonth(), curr.getDate()); if (curr.getDay() === date.getDay()) { console.log(date); } }

次のコードを最適化してください:

let obj = {a: 10, b: 20, c: 30, d: 40, e: 50}; let sum = 0; for (let key in obj) { if (String(obj[key])[0] === '1' || String(obj[key])[0] === '2') { sum += obj[key]; } } console.log(sum);
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否