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

이 해결책의 문제점을 살펴봅시다. 기술적으로 이 코드는 올바르게 작동하며 정답을 제공합니다. 수학적으로는 전체 합을 개수로 나누는 것도, 각 항을 개수로 나누는 것도 모두 정확합니다.

그러나 다른 문제가 발생합니다. 문제는 우리가 나누기 연산을 배열 요소 개수만큼 수행할 것이라는 점입니다. 결과적으로 우리는 많은 불필요한 연산을 수행하게 되는데, 왜냐하면 나누기 연산은 마지막에 한 번만, 즉 찾은 전체 합을 한 번만 나누는 것으로 처리할 수 있기 때문입니다.

코드를 최적화해 봅시다:

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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부