* fix: move "Explore Differences Between..." to basic JS, update seed and tests * fix: resequence "Declare String Variables" * fix: move "Declare a Read-Only Variable..." to basic JS, update seed and tests * fix: revert changes to non-English "Explore Differences Between..." test text * fix: revert test strings, solutions, and seeds for non-English challenges * fix: update "Declare String Variables" description * fix: sync quotation marks in description and seed * fix: modify note in "Declare a Read-Only..." challenge * fix: update operator and compound assignment challenges * fix: update string challenges * fix: update array and array method challenges * fix: update function and scope challenges, resequence slightly * fix: "Word Blanks" solution * fix: add spacing to seed * fix: concatenating += challenge spacing * fix: appending variables to strings spacing * fix: find the length of a string spacing * fix: removed instances of removedFromMyArray = 0 * fix: switch challenges * fix: function argument and param spacing * fix: update counting cards, object challenges, and record collection * fix: finish rest of Basic JS section * fix: introducing else statements solution * fix: update spacing and wording * fix: update wording for const challenge * fix: update functional programming challenges * fix: intermediate algorithms and cert challenges * fix: revert some spacing and remove comments for fp challenge solutions * feat: add notes with links to moved let and const challenges in first two es6 challenges * fix: update es6 intro text * Update curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-javascript/concatenating-strings-with-the-plus-equals-operator.md Co-authored-by: Shaun Hamilton <shauhami020@gmail.com> * Update curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-javascript/finding-a-remainder-in-javascript.md Co-authored-by: Shaun Hamilton <shauhami020@gmail.com> * Update curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-javascript/global-scope-and-functions.md Co-authored-by: Shaun Hamilton <shauhami020@gmail.com> * Update curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-through-an-array-with-a-for-loop.md Co-authored-by: Shaun Hamilton <shauhami020@gmail.com> * Update curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-javascript/iterate-through-an-array-with-a-for-loop.md Co-authored-by: Shaun Hamilton <shauhami020@gmail.com> * Update curriculum/challenges/english/02-javascript-algorithms-and-data-structures/functional-programming/implement-map-on-a-prototype.md Co-authored-by: Shaun Hamilton <shauhami020@gmail.com> * Update curriculum/challenges/english/02-javascript-algorithms-and-data-structures/basic-javascript/declare-a-read-only-variable-with-the-const-keyword.md Co-authored-by: Shaun Hamilton <shauhami020@gmail.com> * fix: concatenating strings with plus operator seed * fix: add comments back to Declare a Read-Only Variable... seed * feat: add es6 to basic javascript redirect tests for let and const challenges * fix: revert "Concatenating Strings with Plus Operator" seed * fix: move test file to cypress/integration/learn/redirects, separate redirect tests Co-authored-by: Shaun Hamilton <shauhami020@gmail.com>
3.1 KiB
id, title, challengeType, videoUrl, forumTopicId, dashedName
id | title | challengeType | videoUrl | forumTopicId | dashedName |
---|---|---|---|---|---|
5a2efd662fb457916e1fe604 | Iterate with JavaScript Do...While Loops | 1 | https://scrimba.com/c/cDqWGcp | 301172 | iterate-with-javascript-do---while-loops |
--description--
The next type of loop you will learn is called a do...while
loop. It is called a do...while
loop because it will first do
one pass of the code inside the loop no matter what, and then continue to run the loop while
the specified condition evaluates to true
.
const ourArray = [];
let i = 0;
do {
ourArray.push(i);
i++;
} while (i < 5);
The example above behaves similar to other types of loops, and the resulting array will look like [0, 1, 2, 3, 4]
. However, what makes the do...while
different from other loops is how it behaves when the condition fails on the first check. Let's see this in action: Here is a regular while
loop that will run the code in the loop as long as i < 5
:
const ourArray = [];
let i = 5;
while (i < 5) {
ourArray.push(i);
i++;
}
In this example, we initialize the value of ourArray
to an empty array and the value of i
to 5. When we execute the while
loop, the condition evaluates to false
because i
is not less than 5, so we do not execute the code inside the loop. The result is that ourArray
will end up with no values added to it, and it will still look like []
when all of the code in the example above has completed running. Now, take a look at a do...while
loop:
const ourArray = [];
let i = 5;
do {
ourArray.push(i);
i++;
} while (i < 5);
In this case, we initialize the value of i
to 5, just like we did with the while
loop. When we get to the next line, there is no condition to evaluate, so we go to the code inside the curly braces and execute it. We will add a single element to the array and then increment i
before we get to the condition check. When we finally evaluate the condition i < 5
on the last line, we see that i
is now 6, which fails the conditional check, so we exit the loop and are done. At the end of the above example, the value of ourArray
is [5]
. Essentially, a do...while
loop ensures that the code inside the loop will run at least once. Let's try getting a do...while
loop to work by pushing values to an array.
--instructions--
Change the while
loop in the code to a do...while
loop so the loop will push only the number 10
to myArray
, and i
will be equal to 11
when your code has finished running.
--hints--
You should be using a do...while
loop for this exercise.
assert(code.match(/do/g));
myArray
should equal [10]
.
assert.deepEqual(myArray, [10]);
i
should equal 11
assert.equal(i, 11);
--seed--
--after-user-code--
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
--seed-contents--
// Setup
const myArray = [];
let i = 10;
// Only change code below this line
while (i < 5) {
myArray.push(i);
i++;
}
--solutions--
const myArray = [];
let i = 10;
do {
myArray.push(i);
i++;
} while (i < 5)