* fix: restructure certifications guide articles * fix: added 3 dashes line before prob expl * fix: added 3 dashes line before hints * fix: added 3 dashes line before solutions
2.6 KiB
2.6 KiB
title
title |
---|
Iterate Through an Array with a For Loop |
Iterate Through an Array with a For Loop
Hints
Hint 1
Remember the structure of a for
loop:
for ([initialization]; [condition]; [final-expression]) statement
- The
[initialization]
part is executed only once (the first time). - The
[condition]
is checked on every iteration. - The
[final-expression]
is executed along thestatement
if[condition]
resolves totrue
.
Hint 2
Remember how accumulators work:
var x += i
- The variable
x
is going to act as the accumulator. - The variable
i
is the one which value will be stored (and accumulated) insidex
- The expression
+=
is an just abreviation ofx = x + i
Solutions
Solution 1 (Click to Show/Hide)
var total = 0;
for (var i = 0; i < myArr.length; i++) {
total += myArr[i];
}
Code Explanation
- Inititialization:
i
gets a value of0
and its used as a counter. - Condition: the subsequent code is executed as long as
i
is lower than the length ofmyArr
(which is 5; five numbers but arrays are zero based). - Final-expression:
i
is incremented by1
. - Statement: The function adds
myArr[i]
's value tototal
until the condition isn't met like so:
total + myArr[0] -> 0 + 2 = 2
total + myArr[1] -> 2 + 3 = 5
total + myArr[2] -> 5 + 4 = 9
total + myArr[3] -> 9 + 5 = 14
total + myArr[4] -> 14 + 6 = 20
Solution 2 (Click to Show/Hide)
for (var y = myArr.length - 1; y >= 0; y--) {
total += myArr[y];
}
Code Explanation
This works similarly to the last solution but it's faster1 although it might not meet your requirements if order is important.
- Initialization:
y
gets themyArr.length
's value once so the function doesn't need to check it atcondition
every time the loop is executed. - Condition: the loop is executed as long as
y
is greater than0
. - Final-expression:
y
is decremented by1
. - Statement: The function adds
myArr[y]
's value tototal
until the condition isn't met like so:
total + myArr[4] -> 0 + 6 = 6
total + myArr[3] -> 6 + 5 = 11
total + myArr[2] -> 11 + 4 = 15
total + myArr[1] -> 15 + 3 = 18
total + myArr[0] -> 18 + 2 = 20
Relevant Links
1. "Are loops really faster in reverse?", stackoverflow.com