106 lines
4.6 KiB
Markdown
106 lines
4.6 KiB
Markdown
---
|
||
id: 5a2efd662fb457916e1fe604
|
||
title: Ітерація з "do...while" циклами, JavaScript
|
||
challengeType: 1
|
||
videoUrl: 'https://scrimba.com/c/cDqWGcp'
|
||
forumTopicId: 301172
|
||
dashedName: iterate-with-javascript-do---while-loops
|
||
---
|
||
|
||
# --description--
|
||
|
||
Наступний вид циклів, який ви вивчите, називається `do...while` циклом. Він називається `do...while` циклом, тому що, спочатку, не зважаючи ні на що, він `do` (робить) одну передачу коду, а потім продовжує виконувати цикл `while` поки вказана умова обчислюється до `true`.
|
||
|
||
```js
|
||
const ourArray = [];
|
||
let i = 0;
|
||
|
||
do {
|
||
ourArray.push(i);
|
||
i++;
|
||
} while (i < 5);
|
||
```
|
||
|
||
Приклад вище поводиться аналогічно з іншими типами циклів, і результуючий масив буде виглядати як `[0, 1, 2, 3, 4]`. Однак, що відрізняє `do...while` від інших циклів, так це те, як він поводиться, коли умова підводить при першій перевірці. Давайте розглянемо це в дії: Ось звичайний `while` цикл, який запустить код за умови, якщо `i < 5`:
|
||
|
||
```js
|
||
const ourArray = [];
|
||
let i = 5;
|
||
|
||
while (i < 5) {
|
||
ourArray.push(i);
|
||
i++;
|
||
}
|
||
```
|
||
|
||
У цьому прикладі ми ініціалізуємо значення `ourArray` до порожнього масиву і значення `i` до 5. Коли ми виконуємо `while` цикл, умова обчислюється до `false`, тому що `i` не менше ніж 5, таким чином ми не виконуємо код всередині циклу. Результатом є те, що до `ourArray` не буде додано ніяких значень і він все ще виглядатиме, як `[]`, коли всі коди, в наведеному вище прикладі, вже завершили роботу. А зараз погляньте на `do...while` цикл:
|
||
|
||
```js
|
||
const ourArray = [];
|
||
let i = 5;
|
||
|
||
do {
|
||
ourArray.push(i);
|
||
i++;
|
||
} while (i < 5);
|
||
```
|
||
|
||
У цьому випадку, ми ініціалізуємо значення `i` до 5, так само, як ми зробили з `while` циклом. Коли ми доходимо до наступного рядка, то бачимо, що умови для обчислення немає. Таким чином, ми рухаємось до коду, що знаходиться у фігурних дужках, і виконуємо його. Ми додамо єдиний елемент до масиву, а потім збільшимо `i` перед тим, як перейти до перевірки умови. Коли ми нарешті обчислимо умову `i < 5` в останньому рядку, ми побачимо, що зараз `i` становить 6, що провалює перевірку умови. Тому, ми виходимо з циклу і завершуємо роботу. Наприкінці наведеного вище прикладу, значення `ourArray` становить `[5]`. В цілому, `do...while` цикл гарантує те, що код всередині циклу буде виконуватися принаймні один раз. Давайте спробуємо підготувати `do...while` цикл до роботи, висуваючи значення до масиву.
|
||
|
||
# --instructions--
|
||
|
||
В коді змініть `while` цикл на `do...while` цикл і він висуватиме лише число `10` до `myArray`, а `i` буде дорівнювати `11`, коли код закінчить роботу.
|
||
|
||
# --hints--
|
||
|
||
Для цього завдання вам слід використовувати `do...while` цикл.
|
||
|
||
```js
|
||
assert(code.match(/do/g));
|
||
```
|
||
|
||
`myArray` повинне дорівнювати `[10]`.
|
||
|
||
```js
|
||
assert.deepEqual(myArray, [10]);
|
||
```
|
||
|
||
`i` повинне дорівнювати `11`
|
||
|
||
```js
|
||
assert.equal(i, 11);
|
||
```
|
||
|
||
# --seed--
|
||
|
||
## --after-user-code--
|
||
|
||
```js
|
||
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
|
||
```
|
||
|
||
## --seed-contents--
|
||
|
||
```js
|
||
// Setup
|
||
const myArray = [];
|
||
let i = 10;
|
||
|
||
// Only change code below this line
|
||
while (i < 5) {
|
||
myArray.push(i);
|
||
i++;
|
||
}
|
||
```
|
||
|
||
# --solutions--
|
||
|
||
```js
|
||
const myArray = [];
|
||
let i = 10;
|
||
do {
|
||
myArray.push(i);
|
||
i++;
|
||
} while (i < 5)
|
||
```
|