⊗jsSpOtLO 272 of 294 menu

Otimização de Operações Cíclicas em JavaScript

Mesmo uma operação leve, repetida várias vezes em um loop, pode consumir muitos recursos.

Vamos ver um exemplo. Suponha que temos um determinado array:

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

Vamos encontrar a média dos elementos deste array. Para isso, precisamos encontrar a soma dos elementos e dividi-la pela quantidade. Suponha que um programador já resolveu esta tarefa da seguinte forma:

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

Vamos analisar os problemas dessa solução. Tecnicamente, o código funciona corretamente e fornece a resposta correta. O fato é que matematicamente é correto tanto dividir a soma total pela quantidade quanto dividir cada uma das parcelas pela quantidade.

No entanto, surge outro problema. O fato é que executaremos a divisão quantas vezes houver elementos em nosso array. E acontece que estamos fazendo um grande número de operações desnecessárias, pois a divisão poderia ter sido feita no final - uma vez, dividindo a soma total encontrada.

Vamos otimizar nosso código:

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

Otimize o seguinte código:

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); } }

Otimize o seguinte código:

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);
Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar