Add languages Russian, Arabic, Chinese, Portuguese (#18305)

This commit is contained in:
Beau Carnes
2018-10-10 18:03:03 -04:00
committed by mrugesh mohapatra
parent 09d3eca712
commit 2ca3a2093f
5517 changed files with 371466 additions and 5 deletions

View File

@ -0,0 +1,67 @@
---
id: 56bbb991ad1ed5201cd392ca
title: Access Array Data with Indexes
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/access-array-data-with-indexes'
videoUrl: ''
localeTitle: Доступ к массиву данных с индексами
---
## Description
<section id="description"> Мы можем получить доступ к данным внутри массивов с помощью <code>indexes</code> . Индексы массива записываются в одну и ту же скобку, в которой используются строки, за исключением того, что вместо указания символа они указывают запись в массиве. Подобно строкам, массивы используют индексирование с <dfn>нулевым</dfn> индексом, поэтому первым элементом в массиве является элемент <code>0</code> . <strong>пример</strong> <blockquote> var array = [50,60,70]; <br> массив [0]; // равно 50 <br> var data = array [1]; // равно 60 </blockquote> <strong>Заметка</strong> <br> Между именем массива и квадратными скобками не должно быть пробелов, например <code>array [0]</code> . Хотя JavaScript способен корректно обрабатывать, это может смутить других программистов, читающих ваш код. </section>
## Instructions
<section id="instructions"> Создайте переменную <code>myData</code> и установите ее равным первому значению <code>myArray</code> используя нотацию в виде скобок. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Переменная <code>myData</code> должна равняться первому значению <code>myArray</code> .
testString: 'assert((function(){if(typeof myArray !== "undefined" && typeof myData !== "undefined" && myArray[0] === myData){return true;}else{return false;}})(), "The variable <code>myData</code> should equal the first value of <code>myArray</code>.");'
- text: Данные в переменной <code>myArray</code> должны быть доступны с использованием нотации в виде скобок.
testString: 'assert((function(){if(code.match(/\s*=\s*myArray\[0\]/g)){return true;}else{return false;}})(), "The data in variable <code>myArray</code> should be accessed using bracket notation.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = [50,60,70];
var ourData = ourArray[0]; // equals 50
// Setup
var myArray = [50,60,70];
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,64 @@
---
id: 56592a60ddddeae28f7aa8e1
title: Access Multi-Dimensional Arrays With Indexes
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/access-array-data-with-indexes'
videoUrl: ''
localeTitle: Доступ к многомерным массивам с индексами
---
## Description
<section id="description"> Один из способов думать о <dfn>многомерном</dfn> массиве - это <em>массив массивов</em> . Когда вы используете скобки для доступа к вашему массиву, первый набор скобок ссылается на записи в массиве внешнего (первого уровня), а каждая дополнительная пара скобок ссылается на следующий уровень записей внутри. <strong>пример</strong> <blockquote> var arr = [ <br> [1,2,3], <br> [4,5,6], <br> [7,8,9], <br> [[10,11,12], 13, 14] <br> ]; <br> обр [3]; // равно [[10,11,12], 13, 14] <br> обр [3] [0]; // равно [10,11,12] <br> обр [3] [0] [1]; // равно 11 </blockquote> <strong>Заметка</strong> <br> Между именем массива и квадратными скобками не должно быть пробелов, например <code>array [0][0]</code> и даже этот <code>array [0] [0]</code> недопустим. Хотя JavaScript способен корректно обрабатывать, это может смутить других программистов, читающих ваш код. </section>
## Instructions
<section id="instructions"> Используя нотацию с помощью скобок, выберите элемент из <code>myArray</code> таким образом, чтобы <code>myData</code> был равен <code>8</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myData</code> должен быть равен <code>8</code> .
testString: 'assert(myData === 8, "<code>myData</code> should be equal to <code>8</code>.");'
- text: Для чтения правильного значения из <code>myArray</code> вы должны использовать условное обозначение.
testString: 'assert(/myArray\[2\]\[1\]/g.test(code) && !/myData\s*=\s*(?:.*[-+*/%]|\d)/g.test(code), "You should be using bracket notation to read the correct value from <code>myArray</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var myArray = [[1,2,3], [4,5,6], [7,8,9], [[10,11,12], 13, 14]];
// Only change code below this line.
var myData = myArray[0][0];
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,82 @@
---
id: 56533eb9ac21ba0edf2244cd
title: Accessing Nested Arrays
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/access-array-data-with-indexes'
videoUrl: ''
localeTitle: Доступ к вложенным массивам
---
## Description
<section id="description"> Как мы видели в предыдущих примерах, объекты могут содержать как вложенные объекты, так и вложенные массивы. Подобно доступу к вложенным объектам, нотация матричного массива может быть привязана для доступа к вложенным массивам. Ниже приведен пример доступа к вложенному массиву: <blockquote> var ourPets = [ <br> { <br> animalType: &quot;cat&quot;, <br> имена: [ <br> &quot;Meowzer&quot;, <br> «Пушистый», <br> «Кит-Кат» <br> ] <br> }, <br> { <br> animalType: «собака», <br> имена: [ <br> &quot;Место&quot;, <br> &quot;Bowser&quot;, <br> «Фрэнки» <br> ] <br> } <br> ]; <br> ourPets [0] .names [1]; // &quot;Пушистый&quot; <br> ourPets [1] .names [0]; // &quot;Место&quot; </blockquote></section>
## Instructions
<section id="instructions"> <code>myPlants</code> второе дерево из переменной <code>myPlants</code> используя <code>myPlants</code> объектов dot и массива. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>secondTree</code> должен равняться &quot;сосне&quot;
testString: 'assert(secondTree === "pine", "<code>secondTree</code> should equal "pine"");'
- text: Используйте обозначения точек и скобок для доступа к <code>myPlants</code>
testString: 'assert(/=\s*myPlants\[1\].list\[1\]/.test(code), "Use dot and bracket notation to access <code>myPlants</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var myPlants = [
{
type: "flowers",
list: [
"rose",
"tulip",
"dandelion"
]
},
{
type: "trees",
list: [
"fir",
"pine",
"birch"
]
}
];
// Only change code below this line
var secondTree = ""; // Change this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,73 @@
---
id: 56533eb9ac21ba0edf2244cc
title: Accessing Nested Objects
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/accessing-nested-objects-in-json'
videoUrl: ''
localeTitle: Доступ к вложенным объектам
---
## Description
<section id="description"> Доступ к дополнительным свойствам объектов можно получить, объединив нотацию точки или скобки. Вот вложенный объект: <blockquote> var ourStorage = { <br> &quot;стол письменный&quot;: { <br> «ящик»: «степлер» <br> }, <br> «кабинет»: { <br> &quot;верхний ящик&quot;: { <br> «folder1»: «файл», <br> &quot;folder2&quot;: &quot;секреты&quot; <br> }, <br> «нижний ящик»: «сода» <br> } <br> }; <br> ourStorage.cabinet [&quot;верхний ящик&quot;]. folder2; // &quot;секреты&quot; <br> ourStorage.desk.drawer; // &quot;степлер&quot; </blockquote></section>
## Instructions
<section id="instructions"> Войдите в объект <code>myStorage</code> и назначьте содержимое свойства <code>glove box</code> переменной <code>gloveBoxContents</code> . Используйте обозначения в виде скобок для свойств с пробелом в их имени. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>gloveBoxContents</code> должен равняться &quot;картам&quot;
testString: 'assert(gloveBoxContents === "maps", "<code>gloveBoxContents</code> should equal "maps"");'
- text: Используйте обозначения точек и скобок для доступа к <code>myStorage</code>
testString: 'assert(/=\s*myStorage\.car\.inside\[\s*("|")glove box\1\s*\]/g.test(code), "Use dot and bracket notation to access <code>myStorage</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var myStorage = {
"car": {
"inside": {
"glove box": "maps",
"passenger seat": "crumbs"
},
"outside": {
"trunk": "jack"
}
}
};
var gloveBoxContents = undefined; // Change this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,76 @@
---
id: 56533eb9ac21ba0edf2244c8
title: Accessing Object Properties with Bracket Notation
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/accessing-objects-properties-with-bracket-notation'
videoUrl: ''
localeTitle: Доступ к объектным свойствам с помощью скобок
---
## Description
<section id="description"> Второй способ доступа к свойствам объекта - это скобки нотации ( <code>[]</code> ). Если свойство объекта, к которому вы пытаетесь получить доступ, имеет пробел в своем имени, вам нужно будет использовать нотацию в виде скобок. Тем не менее, вы все равно можете использовать нотацию нот для объектов без пробелов. Ниже приведен пример использования обозначения скобок для чтения свойства объекта: <blockquote> var myObj = { <br> «Space Name»: «Kirk», <br> «Больше пространства»: «Спок», <br> «NoSpace»: «USS Enterprise» <br> }; <br> myObj [&quot;Space Name&quot;]; // Кирк <br> myObj [&#39;More Space&#39;]; // Спок <br> myObj [ &quot;NoSpace&quot;]; // USS Enterprise </blockquote> Обратите внимание, что имена свойств с пробелами в них должны быть в кавычках (один или два). </section>
## Instructions
<section id="instructions"> Прочитайте значения свойств <code>&quot;an entree&quot;</code> и <code>&quot;the drink&quot;</code> <code>testObj</code> с использованием скобкой и назначьте их <code>entreeValue</code> и <code>drinkValue</code> соответственно. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>entreeValue</code> должен быть строкой
testString: 'assert(typeof entreeValue === "string" , "<code>entreeValue</code> should be a string");'
- text: Значение <code>entreeValue</code> должно быть <code>&quot;hamburger&quot;</code>
testString: 'assert(entreeValue === "hamburger" , "The value of <code>entreeValue</code> should be <code>"hamburger"</code>");'
- text: <code>drinkValue</code> должен быть строкой
testString: 'assert(typeof drinkValue === "string" , "<code>drinkValue</code> should be a string");'
- text: Значение <code>drinkValue</code> должно быть <code>&quot;water&quot;</code>
testString: 'assert(drinkValue === "water" , "The value of <code>drinkValue</code> should be <code>"water"</code>");'
- text: Вы должны дважды использовать скобки
testString: 'assert(code.match(/testObj\s*?\[("|")[^""]+\1\]/g).length > 1, "You should use bracket notation twice");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var testObj = {
"an entree": "hamburger",
"my side": "veggies",
"the drink": "water"
};
// Only change code below this line
var entreeValue = testObj; // Change this line
var drinkValue = testObj; // Change this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,75 @@
---
id: 56533eb9ac21ba0edf2244c7
title: Accessing Object Properties with Dot Notation
challengeType: 1
videoUrl: ''
localeTitle: Доступ к объектным свойствам с нотами Dot
---
## Description
undefined
## Instructions
<section id="instructions"> Прочитайте значения свойств <code>testObj</code> с использованием точечной нотации. Установите переменную <code>hatValue</code> равное свойству объекта <code>hat</code> и установить переменную <code>shirtValue</code> равной свойству объекта <code>shirt</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: ''
testString: 'assert(typeof hatValue === "string" , "<code>hatValue</code> should be a string");'
- text: Значение <code>hatValue</code> должно быть <code>&quot;ballcap&quot;</code>
testString: 'assert(hatValue === "ballcap" , "The value of <code>hatValue</code> should be <code>"ballcap"</code>");'
- text: <code>shirtValue</code> должна быть строкой
testString: 'assert(typeof shirtValue === "string" , "<code>shirtValue</code> should be a string");'
- text: Значение <code>shirtValue</code> должно быть <code>&quot;jersey&quot;</code>
testString: 'assert(shirtValue === "jersey" , "The value of <code>shirtValue</code> should be <code>"jersey"</code>");'
- text: Вы должны использовать точную нотацию дважды
testString: 'assert(code.match(/testObj\.\w+/g).length > 1, "You should use dot notation twice");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var testObj = {
"hat": "ballcap",
"shirt": "jersey",
"shoes": "cleats"
};
// Only change code below this line
var hatValue = testObj; // Change this line
var shirtValue = testObj; // Change this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,78 @@
---
id: 56533eb9ac21ba0edf2244c9
title: Accessing Object Properties with Variables
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/accessing-objects-properties-with-variables'
videoUrl: ''
localeTitle: Доступ к объектам с переменными
---
## Description
<section id="description"> Еще одно использование нотации к скобкам для объектов - это доступ к свойству, которое хранится как значение переменной. Это может быть очень полезно для итерации через свойства объекта или при доступе к поисковой таблице. Ниже приведен пример использования переменной для доступа к свойству: <blockquote> var dogs = { <br> Фидо: «Мутт», Охотник: «Доберман», Снупи: «Бигл», <br> }; <br> var myDog = &quot;Охотник&quot;; <br> var myBreed = dogs [myDog]; <br> console.log (myBreed); // &quot;Доберман&quot; </blockquote> Другим способом использования этой концепции является то, что имя свойства собирается динамически во время выполнения программы, а именно: <blockquote> var someObj = { <br> propName: &quot;Джон&quot; <br> }; <br> Функция propPrefix (str) { <br> var s = &quot;prop&quot;; <br> return s + str; <br> } <br> var someProp = propPrefix (&quot;Name&quot;); // someProp теперь содержит значение &#39;propName&#39; <br> console.log (someObj [someProp]); // &quot;Джон&quot; </blockquote> Обратите внимание, что мы <em>не</em> используем кавычки вокруг имени переменной при ее использовании для доступа к свойству, потому что мы используем <em>значение</em> переменной, а не <em>имя</em> . </section>
## Instructions
<section id="instructions"> Используйте переменную <code>playerNumber</code> для поиска игрока <code>16</code> в <code>testObj</code> с использованием нотации в <code>testObj</code> скобок. Затем назначьте это имя переменной <code>player</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>playerNumber</code> должен быть числом
testString: 'assert(typeof playerNumber === "number", "<code>playerNumber</code> should be a number");'
- text: Переменный <code>player</code> должен быть строкой
testString: 'assert(typeof player === "string", "The variable <code>player</code> should be a string");'
- text: 'Ценность <code>player</code> должна быть «Монтана»,'
testString: 'assert(player === "Montana", "The value of <code>player</code> should be "Montana"");'
- text: Для доступа к <code>testObj</code> вы должны использовать нотацию в виде <code>testObj</code>
testString: 'assert(/testObj\s*?\[.*?\]/.test(code),"You should use bracket notation to access <code>testObj</code>");'
- text: Вы не должны назначать значение <code>Montana</code> для переменной <code>player</code> напрямую.
testString: 'assert(!code.match(/player\s*=\s*"|\"\s*Montana\s*"|\"\s*;/gi),"You should not assign the value <code>Montana</code> to the variable <code>player</code> directly.");'
- text: Вы должны использовать переменную <code>playerNumber</code> в нотации вашего кронштейна
testString: 'assert(/testObj\s*?\[\s*playerNumber\s*\]/.test(code),"You should be using the variable <code>playerNumber</code> in your bracket notation");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var testObj = {
12: "Namath",
16: "Montana",
19: "Unitas"
};
// Only change code below this line;
var playerNumber; // Change this Line
var player = testObj; // Change this Line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,77 @@
---
id: 56bbb991ad1ed5201cd392d2
title: Add New Properties to a JavaScript Object
challengeType: 1
videoUrl: ''
localeTitle: Добавить новые объекты в объект JavaScript
---
## Description
<section id="description"> Вы можете добавлять новые свойства к существующим объектам JavaScript так же, как вы их модифицировали. Вот как мы добавим свойство <code>&quot;bark&quot;</code> в <code>ourDog</code> : <code>ourDog.bark = &quot;bow-wow&quot;;</code> или <code>ourDog[&quot;bark&quot;] = &quot;bow-wow&quot;;</code> Теперь, когда мы оцениваем <code>ourDog.bark</code> , мы получим его <code>ourDog.bark</code> , «лук-вау». </section>
## Instructions
<section id="instructions"> Добавьте свойство <code>&quot;bark&quot;</code> в <code>myDog</code> и установите его на звук собаки, например «woof». Вы можете использовать либо точечную, либо скобку. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Добавьте свойство <code>&quot;bark&quot;</code> в <code>myDog</code> .
testString: 'assert(myDog.bark !== undefined, "Add the property <code>"bark"</code> to <code>myDog</code>.");'
- text: Не добавляйте <code>&quot;bark&quot;</code> в раздел настройки
testString: 'assert(!/bark[^\n]:/.test(code), "Do not add <code>"bark"</code> to the setup section");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
ourDog.bark = "bow-wow";
// Setup
var myDog = {
"name": "Happy Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"]
};
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,59 @@
---
id: cf1111c1c11feddfaeb3bdef
title: Add Two Numbers with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Добавить два номера с JavaScript
---
## Description
<section id="description"> <code>Number</code> - это тип данных в JavaScript, который представляет числовые данные. Теперь попробуем добавить два числа, используя JavaScript. JavaScript использует символ <code>+</code> качестве операции добавления при размещении между двумя числами. <strong>пример</strong> <blockquote> myVar = 5 + 10; // присвоено 15 </blockquote></section>
## Instructions
<section id="instructions"> Измените <code>0</code> так, чтобы сумма равнялась <code>20</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>sum</code> должна равняться <code>20</code>
testString: 'assert(sum === 20, "<code>sum</code> should equal <code>20</code>");'
- text: Используйте оператор <code>+</code>
testString: 'assert(/\+/.test(code), "Use the <code>+</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var sum = 10 + 0;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,75 @@
---
id: 56533eb9ac21ba0edf2244de
title: Adding a Default Option in Switch Statements
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/adding-a-default-option-in-switch-statements'
videoUrl: ''
localeTitle: Добавление опции по умолчанию в операторы switch
---
## Description
<section id="description"> В операторе <code>switch</code> вы не сможете указывать все возможные значения в качестве операторов <code>case</code> . Вместо этого вы можете добавить оператор по <code>default</code> который будет выполняться, если не найдено совпадающих операторов <code>case</code> . Думайте об этом как финальном <code>else</code> утверждении в качестве , <code>if/else</code> цепи. В последнем случае должен использоваться оператор по <code>default</code> . <blockquote> switch (num) { <br> значение case1: <br> statement1; <br> ломать; <br> значение case2: <br> оператор2; <br> ломать; <br> ... <br> по умолчанию: <br> defaultStatement; <br> ломать; <br> } </blockquote></section>
## Instructions
<section id="instructions"> Напишите оператор switch, чтобы задать <code>answer</code> для следующих условий: <br> <code>&quot;a&quot;</code> - &quot;яблоко&quot; <br> <code>&quot;b&quot;</code> - &quot;птица&quot; <br> <code>&quot;c&quot;</code> - &quot;cat&quot; <br> <code>default</code> - &quot;stuff&quot; </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>switchOfStuff(&quot;a&quot;)</code> должен иметь значение &quot;apple&quot;
testString: 'assert(switchOfStuff("a") === "apple", "<code>switchOfStuff("a")</code> should have a value of "apple"");'
- text: <code>switchOfStuff(&quot;b&quot;)</code> должен иметь значение &quot;bird&quot;
testString: 'assert(switchOfStuff("b") === "bird", "<code>switchOfStuff("b")</code> should have a value of "bird"");'
- text: <code>switchOfStuff(&quot;c&quot;)</code> должен иметь значение &quot;cat&quot;
testString: 'assert(switchOfStuff("c") === "cat", "<code>switchOfStuff("c")</code> should have a value of "cat"");'
- text: <code>switchOfStuff(&quot;d&quot;)</code> должен иметь значение &quot;stuff&quot;
testString: 'assert(switchOfStuff("d") === "stuff", "<code>switchOfStuff("d")</code> should have a value of "stuff"");'
- text: <code>switchOfStuff(4)</code> должен иметь значение &quot;stuff&quot;
testString: 'assert(switchOfStuff(4) === "stuff", "<code>switchOfStuff(4)</code> should have a value of "stuff"");'
- text: Вы не должны использовать никаких утверждений <code>if</code> или <code>else</code>
testString: 'assert(!/else/g.test(code) || !/if/g.test(code), "You should not use any <code>if</code> or <code>else</code> statements");'
- text: Вы должны использовать инструкцию по <code>default</code>
testString: 'assert(switchOfStuff("string-to-trigger-default-case") === "stuff", "You should use a <code>default</code> statement");'
- text: У вас должно быть как минимум 3 заявления о <code>break</code>
testString: 'assert(code.match(/break/g).length > 2, "You should have at least 3 <code>break</code> statements");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function switchOfStuff(val) {
var answer = "";
// Only change code below this line
// Only change code above this line
return answer;
}
// Change this value to test
switchOfStuff(1);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,68 @@
---
id: 56533eb9ac21ba0edf2244ed
title: Appending Variables to Strings
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/appending-variables-to-strings'
videoUrl: ''
localeTitle: Добавление переменных в строки
---
## Description
<section id="description"> Так же, как мы можем построить строку из нескольких строк из строковых <dfn>литералов</dfn> , мы также можем добавить переменные в строку, используя оператор equals ( <code>+=</code> ). </section>
## Instructions
<section id="instructions"> Установите <code>someAdjective</code> и добавьте его в <code>myStr</code> используя оператор <code>+=</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>someAdjective</code> должен быть установлен в строку длиной не менее 3 символов
testString: 'assert(typeof someAdjective !== "undefined" && someAdjective.length > 2, "<code>someAdjective</code> should be set to a string at least 3 characters long");'
- text: Добавить <code>someAdjective</code> в <code>myStr</code> используя оператор <code>+=</code>
testString: 'assert(code.match(/myStr\s*\+=\s*someAdjective\s*/).length > 0, "Append <code>someAdjective</code> to <code>myStr</code> using the <code>+=</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var anAdjective = "awesome!";
var ourStr = "freeCodeCamp is ";
ourStr += anAdjective;
// Only change code below this line
var someAdjective;
var myStr = "Learning to code is ";
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,76 @@
---
id: 56533eb9ac21ba0edf2244c3
title: Assignment with a Returned Value
challengeType: 1
guideUrl: 'https://russian.freecodecamp.org/guide/certificates/assignment-with-a-returned-value'
videoUrl: ''
localeTitle: Назначение с возвращенной стоимостью
---
## Description
<section id="description"> Если вы вспомните из нашего обсуждения « <a href="javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator" target="_blank">Сохранение значений с помощью оператора назначения»</a> , все, что находится справа от знака равенства, будет разрешено до присвоения значения. Это означает, что мы можем взять возвращаемое значение функции и присвоить ее переменной. Предположим, что мы предварительно определили <code>sum</code> функций, которая объединяет два числа, а затем: <code>ourSum = sum(5, 12);</code> вызовет функцию <code>sum</code> , которая возвращает значение <code>17</code> и присваивает ее переменной <code>ourSum</code> . </section>
## Instructions
<section id="instructions"> Вызовите функцию <code>processArg</code> с аргументом <code>7</code> и назначьте его возвращаемое значение <code>processed</code> переменной. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>processed</code> должна иметь значение <code>2</code>
testString: 'assert(processed === 2, "<code>processed</code> should have a value of <code>2</code>");'
- text: Вы должны назначить <code>processArg</code> для <code>processed</code>
testString: 'assert(/processed\s*=\s*processArg\(\s*7\s*\)\s*;/.test(code), "You should assign <code>processArg</code> to <code>processed</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var changed = 0;
function change(num) {
return (num + 5) / 3;
}
changed = change(10);
// Setup
var processed = 0;
function processArg(num) {
return (num + 3) / 5;
}
// Only change code below this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,80 @@
---
id: 56bbb991ad1ed5201cd392d0
title: Build JavaScript Objects
challengeType: 1
videoUrl: ''
localeTitle: Создание объектов JavaScript
---
## Description
<section id="description"> Возможно, вы слышали термин <code>object</code> раньше. Объекты похожи на <code>arrays</code> , за исключением того, что вместо использования индексов для доступа и изменения их данных вы получаете доступ к данным в объектах через так называемые <code>properties</code> . Объекты полезны для хранения данных структурированным способом и могут представлять объекты реального мира, такие как кошка. Вот пример объекта cat: <blockquote> var cat = { <br> «имя»: «Усы», <br> «ноги»: 4, <br> «хвосты»: 1, <br> «враги»: [«Вода», «Собаки»] <br> }; </blockquote> В этом примере все свойства сохраняются как строки, такие как <code>&quot;name&quot;</code> , <code>&quot;legs&quot;</code> и <code>&quot;tails&quot;</code> . Однако вы также можете использовать числа как свойства. Вы даже можете опустить кавычки для свойств строки с одним словом, а именно: <blockquote> var anotherObject = { <br> сделать: «Форд», <br> 5: «пять», <br> «модель»: «фокус» <br> }; </blockquote> Однако, если ваш объект имеет какие-либо свойства, отличные от строки, JavaScript автоматически приведет их в виде строк. </section>
## Instructions
<section id="instructions"> Создайте объект, представляющий собаку под названием <code>myDog</code> которая содержит свойства <code>&quot;name&quot;</code> (строка), <code>&quot;legs&quot;</code> , <code>&quot;tails&quot;</code> и <code>&quot;friends&quot;</code> . Вы можете установить эти свойства объекта для любых значений, которые вы хотите, поскольку <code>&quot;name&quot;</code> - это строка, <code>&quot;legs&quot;</code> и <code>&quot;tails&quot;</code> - это числа, а <code>&quot;friends&quot;</code> - это массив. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>myDog</code> должен содержать <code>name</code> свойства, и он должен быть <code>string</code> .'
testString: 'assert((function(z){if(z.hasOwnProperty("name") && z.name !== undefined && typeof z.name === "string"){return true;}else{return false;}})(myDog), "<code>myDog</code> should contain the property <code>name</code> and it should be a <code>string</code>.");'
- text: '<code>myDog</code> должен содержать собственности <code>legs</code> , и это должно быть <code>number</code> .'
testString: 'assert((function(z){if(z.hasOwnProperty("legs") && z.legs !== undefined && typeof z.legs === "number"){return true;}else{return false;}})(myDog), "<code>myDog</code> should contain the property <code>legs</code> and it should be a <code>number</code>.");'
- text: '<code>myDog</code> должен содержать <code>tails</code> свойств, и это должно быть <code>number</code> .'
testString: 'assert((function(z){if(z.hasOwnProperty("tails") && z.tails !== undefined && typeof z.tails === "number"){return true;}else{return false;}})(myDog), "<code>myDog</code> should contain the property <code>tails</code> and it should be a <code>number</code>.");'
- text: '<code>myDog</code> должен содержать <code>friends</code> свойства, и он должен быть <code>array</code> .'
testString: 'assert((function(z){if(z.hasOwnProperty("friends") && z.friends !== undefined && Array.isArray(z.friends)){return true;}else{return false;}})(myDog), "<code>myDog</code> should contain the property <code>friends</code> and it should be an <code>array</code>.");'
- text: <code>myDog</code> должен содержать только все свойства.
testString: 'assert((function(z){return Object.keys(z).length === 4;})(myDog), "<code>myDog</code> should only contain all the given properties.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
// Only change code below this line.
var myDog = {
};
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,82 @@
---
id: 56533eb9ac21ba0edf2244dc
title: Chaining If Else Statements
challengeType: 1
videoUrl: ''
localeTitle: Связывание с другими сообщениями
---
## Description
<section id="description"> <code>if/else</code> утверждения могут быть объединены вместе для сложной логики. Вот <dfn>псевдокод</dfn> операторов с несколькими цепями <code>if</code> / <code>else if</code> : <blockquote> если ( <em>условие 1</em> ) { <br> <em>statement1</em> <br> } else if ( <em>условие2</em> ) { <br> <em>оператор2</em> <br> } else if ( <em>условие 3</em> ) { <br> <em>оператор3</em> <br> , , , <br> } else { <br> <em>statementN</em> <br> } </blockquote></section>
## Instructions
<section id="instructions"> Напишите прикованные <code>if</code> / <code>else if</code> выражения для выполнения следующих условий: <code>num &lt; 5</code> - return &quot;Tiny&quot; <br> <code>num &lt; 10</code> - возврат &quot;Small&quot; <br> <code>num &lt; 15</code> - возврат &quot;Средний&quot; <br> <code>num &lt; 20</code> - возврат &quot;Большой&quot; <br> <code>num &gt;= 20</code> - возврат &quot;Огромный&quot; </section>
## Tests
<section id='tests'>
```yml
tests:
- text: У вас должно быть как минимум четыре оператора <code>else</code>
testString: 'assert(code.match(/else/g).length > 3, "You should have at least four <code>else</code> statements");'
- text: У вас должно быть как минимум четыре оператора <code>if</code>
testString: 'assert(code.match(/if/g).length > 3, "You should have at least four <code>if</code> statements");'
- text: У вас должно быть хотя бы одно заявление о <code>return</code>
testString: 'assert(code.match(/return/g).length >= 1, "You should have at least one <code>return</code> statement");'
- text: <code>testSize(0)</code> должен возвращать &quot;Tiny&quot;
testString: 'assert(testSize(0) === "Tiny", "<code>testSize(0)</code> should return "Tiny"");'
- text: <code>testSize(4)</code> должен вернуть «Tiny»
testString: 'assert(testSize(4) === "Tiny", "<code>testSize(4)</code> should return "Tiny"");'
- text: <code>testSize(5)</code> должен возвращать &quot;Small&quot;
testString: 'assert(testSize(5) === "Small", "<code>testSize(5)</code> should return "Small"");'
- text: <code>testSize(8)</code> должен вернуть «Small»
testString: 'assert(testSize(8) === "Small", "<code>testSize(8)</code> should return "Small"");'
- text: '<code>testSize(10)</code> должен возвращать «Средний»,'
testString: 'assert(testSize(10) === "Medium", "<code>testSize(10)</code> should return "Medium"");'
- text: <code>testSize(14)</code> должен возвращать «Средний»
testString: 'assert(testSize(14) === "Medium", "<code>testSize(14)</code> should return "Medium"");'
- text: <code>testSize(15)</code> должен возвращать &quot;Large&quot;
testString: 'assert(testSize(15) === "Large", "<code>testSize(15)</code> should return "Large"");'
- text: <code>testSize(17)</code> должен вернуть &quot;Large&quot;
testString: 'assert(testSize(17) === "Large", "<code>testSize(17)</code> should return "Large"");'
- text: <code>testSize(20)</code> должен вернуть «Огромный»
testString: 'assert(testSize(20) === "Huge", "<code>testSize(20)</code> should return "Huge"");'
- text: <code>testSize(25)</code> должен вернуть «Огромный»
testString: 'assert(testSize(25) === "Huge", "<code>testSize(25)</code> should return "Huge"");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testSize(num) {
// Only change code below this line
return "Change Me";
// Only change code above this line
}
// Change this value to test
testSize(7);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,50 @@
---
id: bd7123c9c441eddfaeb4bdef
title: Comment Your JavaScript Code
challengeType: 1
videoUrl: ''
localeTitle: Комментарий
---
## Description
<section id="description"> Комментарии - это строки кода, которые JavaScript намеренно игнорирует. Комментарии - отличный способ оставить заметки для себя и для других людей, которым позже нужно будет выяснить, что делает этот код. Существует два способа написания комментариев в JavaScript: Использование <code>//</code> говорит JavaScript, чтобы игнорировать оставшуюся часть текста в текущей строке: <blockquote> // Это встроенный комментарий. </blockquote> Вы можете сделать многострочный комментарий, начинающийся с <code>/*</code> и заканчивающийся на <code>*/</code> : <blockquote> /* Это <br> многострочный комментарий * / </blockquote> <strong>Лучшая практика</strong> <br> Когда вы пишете код, вы должны регулярно добавлять комментарии, чтобы уточнить функцию частей вашего кода. Хороший комментарий может помочь сообщить о намерениях вашего кода - как для других, так <em>и</em> для вашего будущего. </section>
## Instructions
<section id="instructions"> Попробуйте создать один из комментариев каждого типа. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Создайте комментарий стиля <code>//</code> , содержащий не менее пяти букв.'
testString: 'assert(code.match(/(\/\/)...../g), "Create a <code>//</code> style comment that contains at least five letters.");'
- text: 'Создайте комментарий <code>/* */</code> style, содержащий не менее пяти букв.'
testString: 'assert(code.match(/(\/\*)([^\/]{5,})(?=\*\/)/gm), "Create a <code>/* */</code> style comment that contains at least five letters.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,64 @@
---
id: 56533eb9ac21ba0edf2244d0
title: Comparison with the Equality Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с оператором равенства
---
## Description
<section id="description"> В JavaScript есть много <dfn>операторов сравнения</dfn> . Все эти операторы возвращают логическое значение <code>true</code> или <code>false</code> . Основным оператором является оператор равенства <code>==</code> . Оператор равенства сравнивает два значения и возвращает <code>true</code> если они эквивалентны или <code>false</code> если они не являются. Обратите внимание, что равенство отличается от присваивания ( <code>=</code> ), которое присваивает значение справа от оператора переменной в левой части. <blockquote> функция равенстваTest (myVal) { <br> if (myVal == 10) { <br> return «Equal»; <br> } <br> возвращение «Не равно»; <br> } </blockquote> Если <code>myVal</code> равно <code>10</code> , оператор равенства возвращает <code>true</code> , поэтому код в фигурных скобках будет выполняться, и функция вернет <code>&quot;Equal&quot;</code> . В противном случае функция вернет <code>&quot;Not Equal&quot;</code> . Чтобы JavaScript мог сравнивать два разных <code>data types</code> (например, <code>numbers</code> и <code>strings</code> ), он должен преобразовывать один тип в другой. Это называется «Типовое принуждение». Однако, как только это произойдет, он может сравнить термины следующим образом: <blockquote> 1 == 1 // true <br> 1 == 2 // false <br> 1 == &#39;1&#39; // true <br> &quot;3&quot; == 3 // true </blockquote></section>
## Instructions
<section id="instructions"> Добавьте <code>equality operator</code> в указанную строку, чтобы функция вернула «Равно», когда <code>val</code> эквивалентно <code>12</code> </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>testEqual(10)</code> должен вернуть «Не <code>testEqual(10)</code> »
testString: 'assert(testEqual(10) === "Not Equal", "<code>testEqual(10)</code> should return "Not Equal"");'
- text: <code>testEqual(12)</code> должен возвращать &quot;Equal&quot;
testString: 'assert(testEqual(12) === "Equal", "<code>testEqual(12)</code> should return "Equal"");'
- text: <code>testEqual(&quot;12&quot;)</code> должен возвращать &quot;Equal&quot;
testString: 'assert(testEqual("12") === "Equal", "<code>testEqual("12")</code> should return "Equal"");'
- text: Вы должны использовать оператор <code>==</code>
testString: 'assert(code.match(/==/g) && !code.match(/===/g), "You should use the <code>==</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
function testEqual(val) {
if (val) { // Change this line
return "Equal";
}
return "Not Equal";
}
// Change this value to test
testEqual(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,76 @@
---
id: 56533eb9ac21ba0edf2244d4
title: Comparison with the Greater Than Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с более крупным оператором
---
## Description
<section id="description"> Чем больше оператор ( <code>&gt;</code> ), сравнивает значения двух чисел. Если число слева больше числа справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Как и оператор равенства, большее, чем оператор, преобразует типы данных при сравнении. <strong>Примеры</strong> <blockquote> 5&gt; 3 // true <br> 7&gt; &#39;3&#39; // true <br> 2&gt; 3 // false <br> &#39;1&#39;&gt; 9 // false </blockquote></section>
## Instructions
<section id="instructions"> Добавьте к указанным линиям оператор <code>greater than</code> операторы return. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>testGreaterThan(0)</code> должен возвращать «10 или меньше»,'
testString: 'assert(testGreaterThan(0) === "10 or Under", "<code>testGreaterThan(0)</code> should return "10 or Under"");'
- text: '<code>testGreaterThan(10)</code> должен возвращать «10 или меньше»,'
testString: 'assert(testGreaterThan(10) === "10 or Under", "<code>testGreaterThan(10)</code> should return "10 or Under"");'
- text: '<code>testGreaterThan(11)</code> должен вернуть «Более 10»,'
testString: 'assert(testGreaterThan(11) === "Over 10", "<code>testGreaterThan(11)</code> should return "Over 10"");'
- text: '<code>testGreaterThan(99)</code> должен вернуть «Более 10»,'
testString: 'assert(testGreaterThan(99) === "Over 10", "<code>testGreaterThan(99)</code> should return "Over 10"");'
- text: '<code>testGreaterThan(100)</code> должен вернуть «Более 10»,'
testString: 'assert(testGreaterThan(100) === "Over 10", "<code>testGreaterThan(100)</code> should return "Over 10"");'
- text: '<code>testGreaterThan(101)</code> должен вернуть «Более 100»,'
testString: 'assert(testGreaterThan(101) === "Over 100", "<code>testGreaterThan(101)</code> should return "Over 100"");'
- text: '<code>testGreaterThan(150)</code> должен вернуть «Более 100»,'
testString: 'assert(testGreaterThan(150) === "Over 100", "<code>testGreaterThan(150)</code> should return "Over 100"");'
- text: Вы должны использовать оператор <code>&gt;</code> как минимум дважды
testString: 'assert(code.match(/val\s*>\s*("|")*\d+("|")*/g).length > 1, "You should use the <code>&gt;</code> operator at least twice");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testGreaterThan(val) {
if (val) { // Change this line
return "Over 100";
}
if (val) { // Change this line
return "Over 10";
}
return "10 or Under";
}
// Change this value to test
testGreaterThan(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,76 @@
---
id: 56533eb9ac21ba0edf2244d5
title: Comparison with the Greater Than Or Equal To Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с более высоким или равным оператору
---
## Description
<section id="description"> Чем <code>greater than or equal to</code> оператору ( <code>&gt;=</code> ), то сравниваются значения двух чисел. Если число слева больше или равно числу справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Подобно оператору равенства, который <code>greater than or equal to</code> оператору, будет преобразовывать типы данных при сравнении. <strong>Примеры</strong> <blockquote> 6&gt; = 6 // true <br> 7&gt; = &#39;3&#39; // true <br> 2&gt; = 3 // false <br> &#39;7&#39;&gt; = 9 // false </blockquote></section>
## Instructions
<section id="instructions"> Добавьте к указанным линиям оператор, <code>greater than or equal to</code> иметь смысл. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>testGreaterOrEqual(0)</code> должен возвращать «Менее 10»,'
testString: 'assert(testGreaterOrEqual(0) === "Less than 10", "<code>testGreaterOrEqual(0)</code> should return "Less than 10"");'
- text: '<code>testGreaterOrEqual(9)</code> должен вернуть «Менее 10»,'
testString: 'assert(testGreaterOrEqual(9) === "Less than 10", "<code>testGreaterOrEqual(9)</code> should return "Less than 10"");'
- text: '<code>testGreaterOrEqual(10)</code> должен возвращать «10 или более»,'
testString: 'assert(testGreaterOrEqual(10) === "10 or Over", "<code>testGreaterOrEqual(10)</code> should return "10 or Over"");'
- text: '<code>testGreaterOrEqual(11)</code> должен вернуть «10 или более»,'
testString: 'assert(testGreaterOrEqual(11) === "10 or Over", "<code>testGreaterOrEqual(11)</code> should return "10 or Over"");'
- text: '<code>testGreaterOrEqual(19)</code> должен возвращать «10 или более»,'
testString: 'assert(testGreaterOrEqual(19) === "10 or Over", "<code>testGreaterOrEqual(19)</code> should return "10 or Over"");'
- text: '<code>testGreaterOrEqual(100)</code> должен возвращать «20 или более»,'
testString: 'assert(testGreaterOrEqual(100) === "20 or Over", "<code>testGreaterOrEqual(100)</code> should return "20 or Over"");'
- text: '<code>testGreaterOrEqual(21)</code> должен возвращать «20 или более»,'
testString: 'assert(testGreaterOrEqual(21) === "20 or Over", "<code>testGreaterOrEqual(21)</code> should return "20 or Over"");'
- text: 'Вы должны использовать оператор <code>&gt;=</code> по крайней мере, дважды'
testString: 'assert(code.match(/val\s*>=\s*("|")*\d+("|")*/g).length > 1, "You should use the <code>&gt;=</code> operator at least twice");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testGreaterOrEqual(val) {
if (val) { // Change this line
return "20 or Over";
}
if (val) { // Change this line
return "10 or Over";
}
return "Less than 10";
}
// Change this value to test
testGreaterOrEqual(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,68 @@
---
id: 56533eb9ac21ba0edf2244d2
title: Comparison with the Inequality Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с оператором неравенства
---
## Description
<section id="description"> Оператор неравенства ( <code>!=</code> ) Является противоположным оператору равенства. Это означает «Не равно» и возвращает <code>false</code> когда равенство вернет <code>true</code> и <em>наоборот</em> . Как и оператор равенства, оператор неравенства будет преобразовывать типы данных значений при сравнении. <strong>Примеры</strong> <blockquote> 1! = 2 // true <br> 1! = &quot;1&quot; // false <br> 1! = &#39;1&#39; // false <br> 1! = True // false <br> 0! = False // false </blockquote></section>
## Instructions
<section id="instructions"> Добавьте оператор неравенства <code>!=</code> оператор <code>if</code> чтобы функция вернула «Не равно», когда <code>val</code> не эквивалентен <code>99</code> </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>testNotEqual(99)</code> должен возвращать &quot;Equal&quot;
testString: 'assert(testNotEqual(99) === "Equal", "<code>testNotEqual(99)</code> should return "Equal"");'
- text: <code>testNotEqual(&quot;99&quot;)</code> должен возвращать &quot;Equal&quot;
testString: 'assert(testNotEqual("99") === "Equal", "<code>testNotEqual("99")</code> should return "Equal"");'
- text: <code>testNotEqual(12)</code> должен возвращать «Не <code>testNotEqual(12)</code> »
testString: 'assert(testNotEqual(12) === "Not Equal", "<code>testNotEqual(12)</code> should return "Not Equal"");'
- text: <code>testNotEqual(&quot;12&quot;)</code> должен возвращать «Не равно»
testString: 'assert(testNotEqual("12") === "Not Equal", "<code>testNotEqual("12")</code> should return "Not Equal"");'
- text: <code>testNotEqual(&quot;bob&quot;)</code> должен возвращать «Не равно»
testString: 'assert(testNotEqual("bob") === "Not Equal", "<code>testNotEqual("bob")</code> should return "Not Equal"");'
- text: Вы должны использовать оператор <code>!=</code>
testString: 'assert(code.match(/(?!!==)!=/), "You should use the <code>!=</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
function testNotEqual(val) {
if (val) { // Change this line
return "Not Equal";
}
return "Equal";
}
// Change this value to test
testNotEqual(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,74 @@
---
id: 56533eb9ac21ba0edf2244d6
title: Comparison with the Less Than Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с Менеджером оператора
---
## Description
<section id="description"> <dfn>Менее чем</dfn> оператор ( <code>&lt;</code> ) сравнивает значения двух чисел. Если число слева меньше числа справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Как и оператор равенства, <dfn>меньше, чем</dfn> оператор, преобразует типы данных при сравнении. <strong>Примеры</strong> <blockquote> 2 &lt;5 // true <br> &#39;3&#39; &lt;7 // true <br> 5 &lt;5 // false <br> 3 &lt;2 // false <br> &#39;8&#39; &lt;4 // false </blockquote></section>
## Instructions
<section id="instructions"> Добавьте <code>less than</code> операторов к указанным линиям так, чтобы операторы return имели смысл. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>testLessThan(0)</code> должен вернуть «Менее 25»
testString: 'assert(testLessThan(0) === "Under 25", "<code>testLessThan(0)</code> should return "Under 25"");'
- text: '<code>testLessThan(24)</code> должен вернуть «Менее 25 лет»,'
testString: 'assert(testLessThan(24) === "Under 25", "<code>testLessThan(24)</code> should return "Under 25"");'
- text: '<code>testLessThan(25)</code> должен вернуть «Менее 55»,'
testString: 'assert(testLessThan(25) === "Under 55", "<code>testLessThan(25)</code> should return "Under 55"");'
- text: <code>testLessThan(54)</code> должен вернуть «Менее 55»
testString: 'assert(testLessThan(54) === "Under 55", "<code>testLessThan(54)</code> should return "Under 55"");'
- text: '<code>testLessThan(55)</code> должен возвращать «55 или более»,'
testString: 'assert(testLessThan(55) === "55 or Over", "<code>testLessThan(55)</code> should return "55 or Over"");'
- text: '<code>testLessThan(99)</code> должен возвращать «55 или более»,'
testString: 'assert(testLessThan(99) === "55 or Over", "<code>testLessThan(99)</code> should return "55 or Over"");'
- text: Вы должны использовать оператор <code>&lt;</code> по крайней мере дважды
testString: 'assert(code.match(/val\s*<\s*("|")*\d+("|")*/g).length > 1, "You should use the <code>&lt;</code> operator at least twice");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testLessThan(val) {
if (val) { // Change this line
return "Under 25";
}
if (val) { // Change this line
return "Under 55";
}
return "55 or Over";
}
// Change this value to test
testLessThan(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,76 @@
---
id: 56533eb9ac21ba0edf2244d7
title: Comparison with the Less Than Or Equal To Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с меньшим или равным оператору
---
## Description
<section id="description"> Чем <code>less than or equal to</code> оператору ( <code>&lt;=</code> ), то сравниваются значения двух чисел. Если число влево меньше или равно числу справа, оно возвращает <code>true</code> . Если число слева больше числа справа, оно возвращает <code>false</code> . Как и оператор равенства, <code>less than or equal to</code> преобразует типы данных. <strong>Примеры</strong> <blockquote> 4 &lt;= 5 // true <br> &#39;7&#39; &lt;= 7 // true <br> 5 &lt;= 5 // true <br> 3 &lt;= 2 // false <br> &#39;8&#39; &lt;= 4 // false </blockquote></section>
## Instructions
<section id="instructions"> Добавьте <code>less than or equal to</code> оператору к указанным линиям, чтобы иметь смысл. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>testLessOrEqual(0)</code> должен возвращать «Меньше, чем или <code>testLessOrEqual(0)</code> 12»,'
testString: 'assert(testLessOrEqual(0) === "Smaller Than or Equal to 12", "<code>testLessOrEqual(0)</code> should return "Smaller Than or Equal to 12"");'
- text: '<code>testLessOrEqual(11)</code> должен возвращать «Меньше, чем или <code>testLessOrEqual(11)</code> 12»,'
testString: 'assert(testLessOrEqual(11) === "Smaller Than or Equal to 12", "<code>testLessOrEqual(11)</code> should return "Smaller Than or Equal to 12"");'
- text: '<code>testLessOrEqual(12)</code> должен возвращать «Меньше, чем или <code>testLessOrEqual(12)</code> 12»,'
testString: 'assert(testLessOrEqual(12) === "Smaller Than or Equal to 12", "<code>testLessOrEqual(12)</code> should return "Smaller Than or Equal to 12"");'
- text: '<code>testLessOrEqual(23)</code> должен возвращать значение «Меньше, чем <code>testLessOrEqual(23)</code> 24»,'
testString: 'assert(testLessOrEqual(23) === "Smaller Than or Equal to 24", "<code>testLessOrEqual(23)</code> should return "Smaller Than or Equal to 24"");'
- text: '<code>testLessOrEqual(24)</code> должен возвращать значение «Меньше, чем <code>testLessOrEqual(24)</code> 24»,'
testString: 'assert(testLessOrEqual(24) === "Smaller Than or Equal to 24", "<code>testLessOrEqual(24)</code> should return "Smaller Than or Equal to 24"");'
- text: '<code>testLessOrEqual(25)</code> должен вернуть «Больше, чем 24»,'
testString: 'assert(testLessOrEqual(25) === "More Than 24", "<code>testLessOrEqual(25)</code> should return "More Than 24"");'
- text: '<code>testLessOrEqual(55)</code> должен вернуть «Больше, чем 24»,'
testString: 'assert(testLessOrEqual(55) === "More Than 24", "<code>testLessOrEqual(55)</code> should return "More Than 24"");'
- text: 'Вы должны использовать оператор <code>&lt;=</code> по крайней мере, дважды'
testString: 'assert(code.match(/val\s*<=\s*("|")*\d+("|")*/g).length > 1, "You should use the <code>&lt;=</code> operator at least twice");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testLessOrEqual(val) {
if (val) { // Change this line
return "Smaller Than or Equal to 12";
}
if (val) { // Change this line
return "Smaller Than or Equal to 24";
}
return "More Than 24";
}
// Change this value to test
testLessOrEqual(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,64 @@
---
id: 56533eb9ac21ba0edf2244d1
title: Comparison with the Strict Equality Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с оператором строгого равенства
---
## Description
<section id="description"> Строгое равенство ( <code>===</code> ) является аналогом оператора равенства ( <code>==</code> ). Однако, в отличие от оператора равенства, который пытается преобразовать оба значения в общий тип, строгий оператор равенства не выполняет преобразование типа. Если сравниваемые значения имеют разные типы, они считаются неравными, а оператор строгого равенства возвращает false. <strong>Примеры</strong> <blockquote> 3 === 3 // true <br> 3 === &#39;3&#39; // false </blockquote> Во втором примере <code>3</code> является типом <code>Number</code> а <code>&#39;3&#39;</code> - <code>String</code> . </section>
## Instructions
<section id="instructions"> Используйте оператор строгого равенства в выражении <code>if</code> чтобы функция вернула «Равно», когда <code>val</code> строго равно <code>7</code> </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>testStrict(10)</code> должен вернуть «Не <code>testStrict(10)</code> »
testString: 'assert(testStrict(10) === "Not Equal", "<code>testStrict(10)</code> should return "Not Equal"");'
- text: <code>testStrict(7)</code> должен вернуть «Равный»
testString: 'assert(testStrict(7) === "Equal", "<code>testStrict(7)</code> should return "Equal"");'
- text: <code>testStrict(&quot;7&quot;)</code> должен возвращать &quot;Не равно&quot;
testString: 'assert(testStrict("7") === "Not Equal", "<code>testStrict("7")</code> should return "Not Equal"");'
- text: Вы должны использовать оператор <code>===</code>
testString: 'assert(code.match(/(val\s*===\s*\d+)|(\d+\s*===\s*val)/g).length > 0, "You should use the <code>===</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
function testStrict(val) {
if (val) { // Change this line
return "Equal";
}
return "Not Equal";
}
// Change this value to test
testStrict(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,71 @@
---
id: 56533eb9ac21ba0edf2244d3
title: Comparison with the Strict Inequality Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с оператором строгого неравенства
---
## Description
<section id="description"> Оператор строгого неравенства ( <code>!==</code> ) является логической противоположностью оператора строгого равенства. Это означает «строго не равно» и возвращает <code>false</code> когда строгое равенство вернет <code>true</code> и <em>наоборот</em> . Строгое неравенство не будет преобразовывать типы данных. <strong>Примеры</strong> <blockquote> 3! == 3 // false <br> 3! == &#39;3&#39; // true <br> 4! == 3 // true </blockquote></section>
## Instructions
<section id="instructions"> Добавьте <code>strict inequality operator</code> <code>if</code> чтобы функция вернула «Не равно», когда <code>val</code> строго не равно <code>17</code> </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>testStrictNotEqual(17)</code> должен вернуть «Равный»,'
testString: 'assert(testStrictNotEqual(17) === "Equal", "<code>testStrictNotEqual(17)</code> should return "Equal"");'
- text: <code>testStrictNotEqual(&quot;17&quot;)</code> должен возвращать &quot;Не равно&quot;
testString: 'assert(testStrictNotEqual("17") === "Not Equal", "<code>testStrictNotEqual("17")</code> should return "Not Equal"");'
- text: <code>testStrictNotEqual(12)</code> должен вернуть «Не <code>testStrictNotEqual(12)</code> »
testString: 'assert(testStrictNotEqual(12) === "Not Equal", "<code>testStrictNotEqual(12)</code> should return "Not Equal"");'
- text: <code>testStrictNotEqual(&quot;bob&quot;)</code> должен возвращать &quot;Не равно&quot;
testString: 'assert(testStrictNotEqual("bob") === "Not Equal", "<code>testStrictNotEqual("bob")</code> should return "Not Equal"");'
- text: Вы должны использовать оператор <code>!==</code>
testString: 'assert(code.match(/(val\s*!==\s*\d+)|(\d+\s*!==\s*val)/g).length > 0, "You should use the <code>!==</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
function testStrictNotEqual(val) {
// Only Change Code Below this Line
if (val) {
// Only Change Code Above this Line
return "Not Equal";
}
return "Equal";
}
// Change this value to test
testStrictNotEqual(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,81 @@
---
id: 56533eb9ac21ba0edf2244d8
title: Comparisons with the Logical And Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с логикой и оператором
---
## Description
<section id="description"> Иногда вам нужно проверять несколько штук одновременно. <dfn>Логический и</dfn> operator ( <code>&amp;&amp;</code> ) возвращают <code>true</code> тогда и только тогда, когда <dfn>операнды</dfn> слева и справа от него являются истинными. Тот же эффект может быть достигнут путем вложения выражения if внутри другого, если: <blockquote> если (num&gt; 5) { <br> если (num &lt;10) { <br> вернуть «Да»; <br> } <br> } <br> вернуть «Нет»; </blockquote> будет возвращаться только «Да», если <code>num</code> больше <code>5</code> и меньше <code>10</code> . Та же логика может быть записана как: <blockquote> if (num&gt; 5 &amp;&amp; num &lt;10) { <br> вернуть «Да»; <br> } <br> вернуть «Нет»; </blockquote></section>
## Instructions
<section id="instructions"> Объедините два оператора if в один оператор, который вернет <code>&quot;Yes&quot;</code> если значение <code>val</code> меньше или равно <code>50</code> и больше или равно <code>25</code> . В противном случае вернется <code>&quot;No&quot;</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны использовать оператор <code>&amp;&amp;</code> один раз
testString: 'assert(code.match(/&&/g).length === 1, "You should use the <code>&&</code> operator once");'
- text: У вас должен быть только один оператор <code>if</code>
testString: 'assert(code.match(/if/g).length === 1, "You should only have one <code>if</code> statement");'
- text: <code>testLogicalAnd(0)</code> должен возвращать «Нет»
testString: 'assert(testLogicalAnd(0) === "No", "<code>testLogicalAnd(0)</code> should return "No"");'
- text: '<code>testLogicalAnd(24)</code> должен возвращать «Нет»,'
testString: 'assert(testLogicalAnd(24) === "No", "<code>testLogicalAnd(24)</code> should return "No"");'
- text: '<code>testLogicalAnd(25)</code> должен вернуть «Да»,'
testString: 'assert(testLogicalAnd(25) === "Yes", "<code>testLogicalAnd(25)</code> should return "Yes"");'
- text: <code>testLogicalAnd(30)</code> должен вернуть «Да»
testString: 'assert(testLogicalAnd(30) === "Yes", "<code>testLogicalAnd(30)</code> should return "Yes"");'
- text: '<code>testLogicalAnd(50)</code> должен возвращать «Да»,'
testString: 'assert(testLogicalAnd(50) === "Yes", "<code>testLogicalAnd(50)</code> should return "Yes"");'
- text: '<code>testLogicalAnd(51)</code> должен возвращать «Нет»,'
testString: 'assert(testLogicalAnd(51) === "No", "<code>testLogicalAnd(51)</code> should return "No"");'
- text: <code>testLogicalAnd(75)</code> должен возвращать «Нет»
testString: 'assert(testLogicalAnd(75) === "No", "<code>testLogicalAnd(75)</code> should return "No"");'
- text: <code>testLogicalAnd(80)</code> должен возвращать &quot;Нет&quot;
testString: 'assert(testLogicalAnd(80) === "No", "<code>testLogicalAnd(80)</code> should return "No"");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testLogicalAnd(val) {
// Only change code below this line
if (val) {
if (val) {
return "Yes";
}
}
// Only change code above this line
return "No";
}
// Change this value to test
testLogicalAnd(10);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,83 @@
---
id: 56533eb9ac21ba0edf2244d9
title: Comparisons with the Logical Or Operator
challengeType: 1
videoUrl: ''
localeTitle: Сравнение с логическим или оператором
---
## Description
<section id="description"> <dfn>Логический или</dfn> оператор ( <code>||</code> ) возвращает <code>true</code> если любой из <dfn>операндов</dfn> <code>true</code> . В противном случае возвращается <code>false</code> . <dfn>Логический или</dfn> оператор состоит из двух символов трубы ( <code>|</code> ). Обычно это можно найти между клавишами Backspace и Enter. Нижеприведенный рисунок должен выглядеть знакомым с предыдущих точек: <blockquote> если (num&gt; 10) { <br> вернуть «Нет»; <br> } <br> if (num &lt;5) { <br> вернуть «Нет»; <br> } <br> вернуть «Да»; </blockquote> вернет «Да» только в том случае, если <code>num</code> находится между <code>5</code> и <code>10</code> (включено 5 и 10). Та же логика может быть записана как: <blockquote> если (num&gt; 10 || num &lt;5) { <br> вернуть «Нет»; <br> } <br> вернуть «Да»; </blockquote></section>
## Instructions
<section id="instructions"> Объедините два оператора <code>if</code> в один оператор, который возвращает <code>&quot;Outside&quot;</code> если <code>val</code> не находится между <code>10</code> и <code>20</code> , включительно. В противном случае верните <code>&quot;Inside&quot;</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны использовать <code>||</code> оператор один раз
testString: 'assert(code.match(/\|\|/g).length === 1, "You should use the <code>||</code> operator once");'
- text: У вас должен быть только один оператор <code>if</code>
testString: 'assert(code.match(/if/g).length === 1, "You should only have one <code>if</code> statement");'
- text: <code>testLogicalOr(0)</code> должен возвращать &quot;Outside&quot;
testString: 'assert(testLogicalOr(0) === "Outside", "<code>testLogicalOr(0)</code> should return "Outside"");'
- text: <code>testLogicalOr(9)</code> должен возвращать &quot;Outside&quot;
testString: 'assert(testLogicalOr(9) === "Outside", "<code>testLogicalOr(9)</code> should return "Outside"");'
- text: <code>testLogicalOr(10)</code> должен возвращать &quot;Inside&quot;
testString: 'assert(testLogicalOr(10) === "Inside", "<code>testLogicalOr(10)</code> should return "Inside"");'
- text: <code>testLogicalOr(15)</code> должен возвращать &quot;Inside&quot;
testString: 'assert(testLogicalOr(15) === "Inside", "<code>testLogicalOr(15)</code> should return "Inside"");'
- text: <code>testLogicalOr(19)</code> должен возвращать &quot;Inside&quot;
testString: 'assert(testLogicalOr(19) === "Inside", "<code>testLogicalOr(19)</code> should return "Inside"");'
- text: <code>testLogicalOr(20)</code> должен возвращать &quot;Inside&quot;
testString: 'assert(testLogicalOr(20) === "Inside", "<code>testLogicalOr(20)</code> should return "Inside"");'
- text: <code>testLogicalOr(21)</code> должен возвращать «Outside»
testString: 'assert(testLogicalOr(21) === "Outside", "<code>testLogicalOr(21)</code> should return "Outside"");'
- text: <code>testLogicalOr(25)</code> должен возвращать &quot;Outside&quot;
testString: 'assert(testLogicalOr(25) === "Outside", "<code>testLogicalOr(25)</code> should return "Outside"");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testLogicalOr(val) {
// Only change code below this line
if (val) {
return "Outside";
}
if (val) {
return "Outside";
}
// Only change code above this line
return "Inside";
}
// Change this value to test
testLogicalOr(15);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,73 @@
---
id: 56533eb9ac21ba0edf2244af
title: Compound Assignment With Augmented Addition
challengeType: 1
videoUrl: ''
localeTitle: Соединение с добавленным дополнением
---
## Description
<section id="description"> В программировании обычно используются назначения для изменения содержимого переменной. Помните, что все справа от знака равенства оценивается первым, поэтому мы можем сказать: <code>myVar = myVar + 5;</code> добавить <code>5</code> к <code>myVar</code> . Поскольку это такая общая схема, существуют операторы, которые выполняют как математическую операцию, так и назначение за один шаг. Одним из таких операторов является оператор <code>+=</code> . <blockquote> var myVar = 1; <br> myVar + = 5; <br> console.log (MyVar); // Возвращает 6 </blockquote></section>
## Instructions
<section id="instructions"> Преобразуйте назначения для <code>a</code> , <code>b</code> и <code>c</code> чтобы использовать оператор <code>+=</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>a</code> должно равняться <code>15</code>
testString: 'assert(a === 15, "<code>a</code> should equal <code>15</code>");'
- text: <code>b</code> должно равняться <code>26</code>
testString: 'assert(b === 26, "<code>b</code> should equal <code>26</code>");'
- text: <code>c</code> должно равняться <code>19</code>
testString: 'assert(c === 19, "<code>c</code> should equal <code>19</code>");'
- text: Вы должны использовать оператор <code>+=</code> для каждой переменной
testString: 'assert(code.match(/\+=/g).length === 3, "You should use the <code>+=</code> operator for each variable");'
- text: Не изменяйте код над строкой
testString: 'assert(/var a = 3;/.test(code) && /var b = 17;/.test(code) && /var c = 12;/.test(code), "Do not modify the code above the line");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var a = 3;
var b = 17;
var c = 12;
// Only modify code below this line
a = a + 12;
b = 9 + b;
c = c + 7;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,73 @@
---
id: 56533eb9ac21ba0edf2244b2
title: Compound Assignment With Augmented Division
challengeType: 1
videoUrl: ''
localeTitle: Соединение с расширенным подразделением
---
## Description
<section id="description"> Оператор <code>/=</code> делит переменную на другое число. <code>myVar = myVar / 5;</code> <code>myVar</code> на <code>5</code> . Это можно переписать как: <code>myVar /= 5;</code> </section>
## Instructions
<section id="instructions"> Преобразуйте присвоения для <code>a</code> , <code>b</code> и <code>c</code> для использования оператора <code>/=</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>a</code> должно равняться <code>4</code>
testString: 'assert(a === 4, "<code>a</code> should equal <code>4</code>");'
- text: <code>b</code> должно равняться <code>27</code>
testString: 'assert(b === 27, "<code>b</code> should equal <code>27</code>");'
- text: <code>c</code> должно равняться <code>3</code>
testString: 'assert(c === 3, "<code>c</code> should equal <code>3</code>");'
- text: Вы должны использовать оператор <code>/=</code> для каждой переменной
testString: 'assert(code.match(/\/=/g).length === 3, "You should use the <code>/=</code> operator for each variable");'
- text: Не изменяйте код над строкой
testString: 'assert(/var a = 48;/.test(code) && /var b = 108;/.test(code) && /var c = 33;/.test(code), "Do not modify the code above the line");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var a = 48;
var b = 108;
var c = 33;
// Only modify code below this line
a = a / 12;
b = b / 4;
c = c / 11;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,73 @@
---
id: 56533eb9ac21ba0edf2244b1
title: Compound Assignment With Augmented Multiplication
challengeType: 1
videoUrl: ''
localeTitle: Соединение с расширенным умножением
---
## Description
<section id="description"> Оператор <code>*=</code> умножает переменную на число. <code>myVar = myVar * 5;</code> умножит <code>myVar</code> на <code>5</code> . Это можно переписать как: <code>myVar *= 5;</code> </section>
## Instructions
<section id="instructions"> Преобразуйте присвоения для <code>a</code> , <code>b</code> и <code>c</code> чтобы использовать оператор <code>*=</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>a</code> должно равняться <code>25</code>
testString: 'assert(a === 25, "<code>a</code> should equal <code>25</code>");'
- text: <code>b</code> должно равняться <code>36</code>
testString: 'assert(b === 36, "<code>b</code> should equal <code>36</code>");'
- text: <code>c</code> должно равняться <code>46</code>
testString: 'assert(c === 46, "<code>c</code> should equal <code>46</code>");'
- text: Вы должны использовать оператор <code>*=</code> для каждой переменной
testString: 'assert(code.match(/\*=/g).length === 3, "You should use the <code>*=</code> operator for each variable");'
- text: Не изменяйте код над строкой
testString: 'assert(/var a = 5;/.test(code) && /var b = 12;/.test(code) && /var c = 4\.6;/.test(code), "Do not modify the code above the line");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var a = 5;
var b = 12;
var c = 4.6;
// Only modify code below this line
a = a * 5;
b = 3 * b;
c = c * 10;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,73 @@
---
id: 56533eb9ac21ba0edf2244b0
title: Compound Assignment With Augmented Subtraction
challengeType: 1
videoUrl: ''
localeTitle: Соединение с расширенной вычитанием
---
## Description
<section id="description"> Как и оператор <code>+=</code> , <code>-=</code> вычитает число из переменной. <code>myVar = myVar - 5;</code> вычитает <code>5</code> из <code>myVar</code> . Это можно переписать как: <code>myVar -= 5;</code> </section>
## Instructions
<section id="instructions"> Преобразуйте присвоения для <code>a</code> , <code>b</code> и <code>c</code> для использования оператора <code>-=</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>a</code> должно равняться <code>5</code>
testString: 'assert(a === 5, "<code>a</code> should equal <code>5</code>");'
- text: <code>b</code> должно равняться <code>-6</code>
testString: 'assert(b === -6, "<code>b</code> should equal <code>-6</code>");'
- text: <code>c</code> должно равняться <code>2</code>
testString: 'assert(c === 2, "<code>c</code> should equal <code>2</code>");'
- text: Вы должны использовать оператор <code>-=</code> для каждой переменной
testString: 'assert(code.match(/-=/g).length === 3, "You should use the <code>-=</code> operator for each variable");'
- text: Не изменяйте код над строкой
testString: 'assert(/var a = 11;/.test(code) && /var b = 9;/.test(code) && /var c = 3;/.test(code), "Do not modify the code above the line");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var a = 11;
var b = 9;
var c = 3;
// Only modify code below this line
a = a - 6;
b = b - 15;
c = c - 1;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,68 @@
---
id: 56533eb9ac21ba0edf2244b7
title: Concatenating Strings with Plus Operator
challengeType: 1
videoUrl: ''
localeTitle: Конкатенация строк с помощью оператора Plus
---
## Description
<section id="description"> В JavaScript, когда оператор <code>+</code> используется со значением <code>String</code> , он называется оператором <dfn>конкатенации</dfn> . Вы можете создать новую строку из других строк путем <dfn>конкатенации</dfn> их вместе. <strong>пример</strong> <blockquote> «Меня зовут Алан, +, я конкатенирую». </blockquote> <strong>Заметка</strong> <br> Следите за пробелами. Конкатенация не добавляет пробелов между конкатенированными строками, поэтому вам нужно будет добавить их самостоятельно. </section>
## Instructions
<section id="instructions"> Создайте <code>myStr</code> из строк <code>&quot;This is the start. &quot;</code> и <code>&quot;This is the end.&quot;</code> используя оператор <code>+</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myStr</code> должен иметь значение <code>This is the start. This is the end.</code>
testString: 'assert(myStr === "This is the start. This is the end.", "<code>myStr</code> should have a value of <code>This is the start. This is the end.</code>");'
- text: Используйте оператор <code>+</code> для создания <code>myStr</code>
testString: 'assert(code.match(/([""]).*([""])\s*\+\s*([""]).*([""])/g).length > 1, "Use the <code>+</code> operator to build <code>myStr</code>");'
- text: <code>myStr</code> должен быть создан с использованием ключевого слова <code>var</code> .
testString: 'assert(/var\s+myStr/.test(code), "<code>myStr</code> should be created using the <code>var</code> keyword.");'
- text: Обязательно присвойте результат переменной <code>myStr</code> .
testString: 'assert(/myStr\s*=/.test(code), "Make sure to assign the result to the <code>myStr</code> variable.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourStr = "I come first. " + "I come second.";
// Only change code below this line
var myStr;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,65 @@
---
id: 56533eb9ac21ba0edf2244b8
title: Concatenating Strings with the Plus Equals Operator
challengeType: 1
videoUrl: ''
localeTitle: Объединение строк с помощью оператора Plus Equals
---
## Description
<section id="description"> Мы также можем использовать оператор <code>+=</code> для <dfn>конкатенации</dfn> строки в конец существующей строковой переменной. Это может быть очень полезно для разбиения длинной строки на несколько строк. <strong>Заметка</strong> <br> Следите за пробелами. Конкатенация не добавляет пробелов между конкатенированными строками, поэтому вам нужно будет добавить их самостоятельно. </section>
## Instructions
<section id="instructions"> Постройте <code>myStr</code> в нескольких строках, <code>myStr</code> эти две строки: <code>&quot;This is the first sentence. &quot;</code> и <code>&quot;This is the second sentence.&quot;</code> используя оператор <code>+=</code> . Используйте оператор <code>+=</code> аналогичный тому, как он отображается в редакторе. Начните с назначения первой строки <code>myStr</code> , затем добавьте вторую строку. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myStr</code> должно иметь значение <code>This is the first sentence. This is the second sentence.</code>
testString: 'assert(myStr === "This is the first sentence. This is the second sentence.", "<code>myStr</code> should have a value of <code>This is the first sentence. This is the second sentence.</code>");'
- text: Используйте оператор <code>+=</code> для создания <code>myStr</code>
testString: 'assert(code.match(/\w\s*\+=\s*[""]/g).length > 1 && code.match(/\w\s*\=\s*[""]/g).length > 1, "Use the <code>+=</code> operator to build <code>myStr</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourStr = "I come first. ";
ourStr += "I come second.";
// Only change code below this line
var myStr;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,65 @@
---
id: 56533eb9ac21ba0edf2244b9
title: Constructing Strings with Variables
challengeType: 1
videoUrl: ''
localeTitle: Построение строк с переменными
---
## Description
<section id="description"> Иногда вам нужно будет создать строку, стиль <a href="https://en.wikipedia.org/wiki/Mad_Libs" target="_blank">Mad Libs</a> . Используя оператор конкатенации ( <code>+</code> ), вы можете вставить одну или несколько переменных в строку, которую вы строите. </section>
## Instructions
<section id="instructions"> Установите <code>myName</code> в строку, равную вашему имени, и создайте <code>myStr</code> с <code>myName</code> между строками <code>&quot;My name is &quot;</code> и <code>&quot; and I am well!&quot;</code> </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myName</code> должен быть установлен в строку длиной не менее 3 символов
testString: 'assert(typeof myName !== "undefined" && myName.length > 2, "<code>myName</code> should be set to a string at least 3 characters long");'
- text: Используйте два <code>+</code> оператора для сборки <code>myStr</code> с <code>myName</code> внутри него
testString: 'assert(code.match(/[""]\s*\+\s*myName\s*\+\s*[""]/g).length > 0, "Use two <code>+</code> operators to build <code>myStr</code> with <code>myName</code> inside it");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourName = "freeCodeCamp";
var ourStr = "Hello, our name is " + ourName + ", how are you?";
// Only change code below this line
var myName;
var myStr;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,71 @@
---
id: 56105e7b514f539506016a5e
title: Count Backwards With a For Loop
challengeType: 1
videoUrl: ''
localeTitle: Count Backwards с помощью цикла
---
## Description
<section id="description"> Цикл for также может рассчитывать назад, пока мы можем определить правильные условия. Для того, чтобы пересчитать назад два раза, нам нужно изменить нашу <code>initialization</code> , <code>condition</code> и <code>final-expression</code> . Мы начнем с <code>i = 10</code> и цикл, пока <code>i &gt; 0</code> . Мы будем уменьшать <code>i</code> на 2 каждый цикл с <code>i -= 2</code> . <blockquote> var ourArray = []; <br> для (var i = 10; i&gt; 0; i- = 2) { <br> ourArray.push (я); <br> } </blockquote> <code>ourArray</code> будет содержать <code>[10,8,6,4,2]</code> . Давайте изменим нашу <code>initialization</code> и <code>final-expression</code> чтобы мы могли рассчитывать назад на два по нечетным числам. </section>
## Instructions
<section id="instructions"> Нажимайте нечетные числа от 9 до 1 в <code>myArray</code> используя цикл <code>for</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны использовать <code>for</code> петли для этого.
testString: 'assert(code.match(/for\s*\(/g).length > 1, "You should be using a <code>for</code> loop for this.");'
- text: Вы должны использовать метод массива <code>push</code> .
testString: 'assert(code.match(/myArray.push/), "You should be using the array method <code>push</code>.");'
- text: '<code>myArray</code> должен быть равен <code>[9,7,5,3,1]</code> .'
testString: 'assert.deepEqual(myArray, [9,7,5,3,1], "<code>myArray</code> should equal <code>[9,7,5,3,1]</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = [];
for (var i = 10; i > 0; i -= 2) {
ourArray.push(i);
}
// Setup
var myArray = [];
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,74 @@
---
id: 565bbe00e9cc8ac0725390f4
title: Counting Cards
challengeType: 1
videoUrl: ''
localeTitle: Счетные карточки
---
## Description
<section id="description"> В игре Blackjack в казино игрок может получить преимущество над домом, отслеживая относительное количество высоких и низких карт, оставшихся в колоде. Это называется <a href="https://en.wikipedia.org/wiki/Card_counting" target="_blank">подсчет карт</a> . Наличие более высоких карт, оставшихся в колоде, способствует игроку. Каждой карте присваивается значение в соответствии с приведенной ниже таблицей. Когда счет положителен, игрок должен делать ставки на высокий уровень. Когда счетчик равен нулю или отрицателен, игрок должен делать ставки на низком уровне. <table class="table table-striped"><thead><tr><th> Изменить счет </th><th> Карты </th></tr></thead><tbody><tr><td> +1 </td><td> 2, 3, 4, 5, 6 </td></tr><tr><td> 0 </td><td> 7, 8, 9 </td></tr><tr><td> -1 </td><td> 10, &#39;J&#39;, &#39;Q&#39;, &#39;K&#39;, &#39;A&#39; </td></tr></tbody></table> Вы будете писать функцию подсчета карт. Он получит параметр <code>card</code> , который может быть числом или строкой, и увеличивать или уменьшать глобальную переменную <code>count</code> соответствии с значением карты (см. Таблицу). Затем функция вернет строку с текущим счетчиком и строкой <code>Bet</code> если счетчик положителен, или <code>Hold</code> если счетчик равен нулю или отрицателен. Текущий счетчик и решение игрока ( <code>Bet</code> или <code>Hold</code> ) должны быть разделены одним пробелом. <strong>Пример вывода</strong> <br> <code>-3 Hold</code> <br> <code>5 Bet</code> <strong>подсказок</strong> <code>5 Bet</code> <br> НЕ сбрасывайте <code>count</code> до 0, когда значение равно 7, 8 или 9. <br> НЕ возвращать массив. <br> НЕ включайте в выход кавычки (одиночные или двойные). </section>
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Последовательность карт 2, 3, 4, 5, 6 должна вернуть <code>5 Bet</code>'
testString: 'assert((function(){ count = 0; cc(2);cc(3);cc(4);cc(5);var out = cc(6); if(out === "5 Bet") {return true;} return false; })(), "Cards Sequence 2, 3, 4, 5, 6 should return <code>5 Bet</code>");'
- text: 'Последовательность карт 7, 8, 9 должна возвращаться <code>0 Hold</code>'
testString: 'assert((function(){ count = 0; cc(7);cc(8);var out = cc(9); if(out === "0 Hold") {return true;} return false; })(), "Cards Sequence 7, 8, 9 should return <code>0 Hold</code>");'
- text: 'Последовательность карточек 10, J, Q, K, A должна возвращать <code>-5 Hold</code>'
testString: 'assert((function(){ count = 0; cc(10);cc("J");cc("Q");cc("K");var out = cc("A"); if(out === "-5 Hold") {return true;} return false; })(), "Cards Sequence 10, J, Q, K, A should return <code>-5 Hold</code>");'
- text: 'Последовательность карт 3, 7, Q, 8, A должна возвращать <code>-1 Hold</code>'
testString: 'assert((function(){ count = 0; cc(3);cc(7);cc("Q");cc(8);var out = cc("A"); if(out === "-1 Hold") {return true;} return false; })(), "Cards Sequence 3, 7, Q, 8, A should return <code>-1 Hold</code>");'
- text: 'Последовательность карт 2, J, 9, 2, 7 должна вернуть <code>1 Bet</code>'
testString: 'assert((function(){ count = 0; cc(2);cc("J");cc(9);cc(2);var out = cc(7); if(out === "1 Bet") {return true;} return false; })(), "Cards Sequence 2, J, 9, 2, 7 should return <code>1 Bet</code>");'
- text: 'Последовательность карт 2, 2, 10 должна вернуть <code>1 Bet</code>'
testString: 'assert((function(){ count = 0; cc(2);cc(2);var out = cc(10); if(out === "1 Bet") {return true;} return false; })(), "Cards Sequence 2, 2, 10 should return <code>1 Bet</code>");'
- text: 'Последовательность карт 3, 2, A, 10, K должна возвращать <code>-1 Hold</code>'
testString: 'assert((function(){ count = 0; cc(3);cc(2);cc("A");cc(10);var out = cc("K"); if(out === "-1 Hold") {return true;} return false; })(), "Cards Sequence 3, 2, A, 10, K should return <code>-1 Hold</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var count = 0;
function cc(card) {
// Only change code below this line
return "Change Me";
// Only change code above this line
}
// Add/remove calls to test your function.
// Note: Only the last will display
cc(2); cc(3); cc(7); cc('K'); cc('A');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,61 @@
---
id: cf1391c1c11feddfaeb4bdef
title: Create Decimal Numbers with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Создание десятичных чисел с помощью JavaScript
---
## Description
<section id="description"> Мы также можем хранить десятичные числа в переменных. Десятичные числа иногда называются <dfn>числами с плавающей запятой</dfn> или <dfn>поплавками</dfn> . <strong>Заметка</strong> <br> Не все реальные числа могут быть точно представлены в <dfn>плавающей точке</dfn> . Это может привести к ошибкам округления. <a href="https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems" target="_blank">Подробности здесь</a> . </section>
## Instructions
<section id="instructions"> Создайте переменную <code>myDecimal</code> и дайте ей десятичное значение с дробной частью (например, <code>5.7</code> ). </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myDecimal</code> должен быть числом.
testString: 'assert(typeof myDecimal === "number", "<code>myDecimal</code> should be a number.");'
- text: <code>myDecimal</code> должен иметь десятичную точку
testString: 'assert(myDecimal % 1 != 0, "<code>myDecimal</code> should have a decimal point"); '
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var ourDecimal = 5.7;
// Only change code below this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,60 @@
---
id: bd7123c9c443eddfaeb5bdef
title: Declare JavaScript Variables
challengeType: 1
videoUrl: ''
localeTitle: Объявление переменных JavaScript
---
## Description
<section id="description"> В информатике <dfn>данные</dfn> - это все, что имеет значение для компьютера. JavaScript предоставляет семь разных <dfn>типов данных,</dfn> которые являются <code>undefined</code> , <code>null</code> , <code>boolean</code> , <code>string</code> , <code>symbol</code> , <code>number</code> и <code>object</code> . Например, компьютеры различают числа, такие как число <code>12</code> и <code>strings</code> , такие как <code>&quot;12&quot;</code> , <code>&quot;dog&quot;</code> или <code>&quot;123 cats&quot;</code> , которые представляют собой коллекции символов. Компьютеры могут выполнять математические операции над числом, но не по строке. <dfn>Переменные</dfn> позволяют компьютерам хранить и манипулировать данными динамически. Они делают это, используя «метку», чтобы указывать на данные, а не на использование самих данных. Любой из семи типов данных может быть сохранен в переменной. <code>Variables</code> аналогичны <code>Variables</code> x и y, которые вы используете в математике, что означает, что они простое имя для представления данных, к которым мы хотим обратиться. Компьютерные <code>variables</code> отличаются от математических переменных тем, что они могут хранить разные значения в разное время. Мы говорим JavaScript, чтобы создать или <dfn>объявить</dfn> переменную, поставив перед ним ключевое слово <code>var</code> , например: <blockquote> var ourName; </blockquote> создает <code>variable</code> именем <code>ourName</code> . В JavaScript мы заканчиваем операторы точкой с запятой. Имена <code>Variable</code> могут состоять из чисел, букв и <code>$</code> или <code>_</code> , но могут не содержать пробелов или начинаться с числа. </section>
## Instructions
<section id="instructions"> Используйте ключевое слово <code>var</code> для создания переменной <code>myName</code> . <strong>намек</strong> <br> Посмотрите на пример <code>ourName</code> если вы застряли. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Вы должны объявить <code>myName</code> с ключевым словом <code>var</code> , заканчивающимся точкой с запятой'
testString: 'assert(/var\s+myName\s*;/.test(code), "You should declare <code>myName</code> with the <code>var</code> keyword, ending with a semicolon");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourName;
// Declare myName below this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,63 @@
---
id: bd7123c9c444eddfaeb5bdef
title: Declare String Variables
challengeType: 1
videoUrl: ''
localeTitle: Объявлять строковые переменные
---
## Description
<section id="description"> Раньше мы использовали код <code>var myName = &quot;your name&quot;;</code> <code>&quot;your name&quot;</code> называется <dfn>строковым</dfn> <dfn>литералом</dfn> . Это строка, потому что это серия из нуля или более символов, заключенных в одинарные или двойные кавычки. </section>
## Instructions
<section id="instructions"> Создайте две новые <code>string</code> переменные: <code>myFirstName</code> и <code>myLastName</code> и присвойте им значения вашего первого и последнего имени, соответственно. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myFirstName</code> должно быть строкой с хотя бы одним символом.
testString: 'assert((function(){if(typeof myFirstName !== "undefined" && typeof myFirstName === "string" && myFirstName.length > 0){return true;}else{return false;}})(), "<code>myFirstName</code> should be a string with at least one character in it.");'
- text: <code>myLastName</code> должно быть строкой с хотя бы одним символом.
testString: 'assert((function(){if(typeof myLastName !== "undefined" && typeof myLastName === "string" && myLastName.length > 0){return true;}else{return false;}})(), "<code>myLastName</code> should be a string with at least one character in it.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var firstName = "Alan";
var lastName = "Turing";
// Only change code below this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,66 @@
---
id: 56533eb9ac21ba0edf2244ad
title: Decrement a Number with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Уменьшить число с помощью JavaScript
---
## Description
<section id="description"> Вы можете легко <dfn>уменьшать</dfn> или уменьшить переменную на один с <code>--</code> оператором. <code>i--;</code> эквивалентно <code>i = i - 1;</code> <strong>Заметка</strong> <br> Вся строка становится <code>i--;</code> , устраняя необходимость равенства знака. </section>
## Instructions
<section id="instructions"> Измените код на использование оператора <code>--</code> на <code>myVar</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myVar</code> должен равняться <code>10</code>
testString: 'assert(myVar === 10, "<code>myVar</code> should equal <code>10</code>");'
- text: <code>myVar = myVar - 1;</code> следует изменить
testString: 'assert(/var\s*myVar\s*=\s*11;\s*\/*.*\s*([-]{2}\s*myVar|myVar\s*[-]{2});/.test(code), "<code>myVar = myVar - 1;</code> should be changed");'
- text: Используйте <code>--</code> оператор на <code>myVar</code>
testString: 'assert(/[-]{2}\s*myVar|myVar\s*[-]{2}/.test(code), "Use the <code>--</code> operator on <code>myVar</code>");'
- text: Не меняйте код над строкой
testString: 'assert(/var myVar = 11;/.test(code), "Do not change code above the line");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var myVar = 11;
// Only change code below this line
myVar = myVar - 1;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,79 @@
---
id: 56bbb991ad1ed5201cd392d3
title: Delete Properties from a JavaScript Object
challengeType: 1
videoUrl: ''
localeTitle: Удаление свойств из объекта JavaScript
---
## Description
<section id="description"> Мы также можем удалить свойства из таких объектов: <code>delete ourDog.bark;</code> </section>
## Instructions
<section id="instructions"> Удалите свойство <code>&quot;tails&quot;</code> из <code>myDog</code> . Вы можете использовать либо точечную, либо скобку. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Удалите свойство <code>&quot;tails&quot;</code> из <code>myDog</code> .
testString: 'assert(typeof myDog === "object" && myDog.tails === undefined, "Delete the property <code>"tails"</code> from <code>myDog</code>.");'
- text: Не изменяйте настройку <code>myDog</code>
testString: 'assert(code.match(/"tails": 1/g).length > 1, "Do not modify the <code>myDog</code> setup");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"],
"bark": "bow-wow"
};
delete ourDog.bark;
// Setup
var myDog = {
"name": "Happy Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"],
"bark": "woof"
};
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,61 @@
---
id: bd7993c9ca9feddfaeb7bdef
title: Divide One Decimal by Another with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Разделить одно десятичное на другое с помощью JavaScript
---
## Description
<section id="description"> Теперь давайте разделим одно десятичное на другое. </section>
## Instructions
<section id="instructions"> Измените <code>0.0</code> так, чтобы <code>quotient</code> равен <code>2.2</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Переменный <code>quotient</code> должен равняться <code>2.2</code>
testString: 'assert(quotient === 2.2, "The variable <code>quotient</code> should equal <code>2.2</code>");'
- text: Вы должны использовать оператор <code>/</code> для разделения 4.4 на 2
testString: 'assert(/4\.40*\s*\/\s*2\.*0*/.test(code), "You should use the <code>/</code> operator to divide 4.4 by 2");'
- text: Значение переменной следует присваивать только один раз
testString: 'assert(code.match(/quotient/g).length === 1, "The quotient variable should only be assigned once");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var quotient = 0.0 / 2.0; // Fix this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,59 @@
---
id: cf1111c1c11feddfaeb6bdef
title: Divide One Number by Another with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Разделите одно число другим с помощью JavaScript
---
## Description
<section id="description"> Мы также можем разделить одно число на другое. JavaScript использует символ <code>/</code> для деления. <p> <strong>пример</strong> </p><blockquote> myVar = 16/2; // присвоено 8 </blockquote></section>
## Instructions
<section id="instructions"> Измените значение <code>0</code> так, чтобы <code>quotient</code> был равен <code>2</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Сделайте переменное <code>quotient</code> равным 2.
testString: 'assert(quotient === 2, "Make the variable <code>quotient</code> equal to 2.");'
- text: Используйте оператор <code>/</code>
testString: 'assert(/\d+\s*\/\s*\d+/.test(code), "Use the <code>/</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var quotient = 66 / 0;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,67 @@
---
id: 56533eb9ac21ba0edf2244b6
title: Escape Sequences in Strings
challengeType: 1
videoUrl: ''
localeTitle: Последовательности выхода в строках
---
## Description
<section id="description"> Цитаты не являются единственными символами, которые могут быть <dfn>экранированы</dfn> внутри строки. Существует две причины использования экранирующих символов: во-первых, чтобы вы могли использовать символы, которые вы в противном случае не могли бы вывести, например, backspace. Во-вторых, вы можете представить несколько кавычек в строке без неправильного толкования JavaScript, что вы имеете в виду. Мы узнали об этом в предыдущей задаче. <table class="table table-striped"><thead><tr><th> Код </th><th> Вывод </th></tr></thead><tbody><tr><td> <code>\&#39;</code> </td> <td> одиночная цитата </td></tr><tr><td> <code>\&quot;</code> </td> <td> двойная цитата </td></tr><tr><td> <code>\\</code> </td> <td> обратный слэш </td></tr><tr><td> <code>\n</code> </td> <td> новая линия </td></tr><tr><td> <code>\r</code> </td> <td> возврат каретки </td></tr><tr><td> <code>\t</code> </td> <td> табуляция </td></tr><tr><td> <code>\b</code> </td> <td> возврат на одну позицию </td></tr><tr><td> <code>\f</code> </td> <td> форма подачи </td></tr></tbody></table> <em>Обратите внимание, что обратная косая черта должна быть экранирована, чтобы отображать ее как обратную косую черту.</em> </section>
## Instructions
<section id="instructions"> Назначьте следующие три строки текста в единственную переменную <code>myStr</code> используя escape-последовательности. <blockquote> Первая линия <br> \Вторая линия <br> ThirdLine </blockquote> Для правильной вставки специальных символов вам необходимо использовать escape-последовательности. Вам также нужно будет следить за интервалом, как он выглядит выше, без пробелов между escape-последовательностями или словами. Вот текст с выведенными escape-последовательностями. <q>FirstLine <code>newline</code> <code>tab</code> <code>backslash</code> второй</q> линии <q><code>newline</code> ThirdLine</q> </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myStr</code> не должен содержать пробелов
testString: 'assert(!/ /.test(myStr), "<code>myStr</code> should not contain any spaces");'
- text: '<code>myStr</code> должен содержать строки <code>FirstLine</code> , <code>SecondLine</code> и <code>ThirdLine</code> (помните о чувствительности к регистру)'
testString: 'assert(/FirstLine/.test(myStr) && /SecondLine/.test(myStr) && /ThirdLine/.test(myStr), "<code>myStr</code> should contain the strings <code>FirstLine</code>, <code>SecondLine</code> and <code>ThirdLine</code> (remember case sensitivity)");'
- text: <code>FirstLine</code> должен следовать символ новой строки <code>\n</code>
testString: 'assert(/FirstLine\n/.test(myStr), "<code>FirstLine</code> should be followed by the newline character <code>\n</code>");'
- text: <code>myStr</code> должен содержать символ табуляции <code>\t</code> который следует за символом новой строки
testString: 'assert(/\n\t/.test(myStr), "<code>myStr</code> should contain a tab character <code>\t</code> which follows a newline character");'
- text: <code>SecondLine</code> должен предшествовать символ обратной косой черты <code>\\</code>
testString: 'assert(/\SecondLine/.test(myStr), "<code>SecondLine</code> should be preceded by the backslash character <code>\\</code>");'
- text: Должен быть символ новой строки между <code>SecondLine</code> и <code>ThirdLine</code>
testString: 'assert(/SecondLine\nThirdLine/.test(myStr), "There should be a newline character between <code>SecondLine</code> and <code>ThirdLine</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var myStr; // Change this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,59 @@
---
id: 56533eb9ac21ba0edf2244b5
title: Escaping Literal Quotes in Strings
challengeType: 1
videoUrl: ''
localeTitle: Исключение буквенных котировок в строках
---
## Description
<section id="description"> Когда вы определяете строку, вы должны начинать и заканчивать одиночную или двойную кавычку. Что происходит, когда вам нужна буквальная цитата: <code>&quot;</code> или <code>&#39;</code> внутри вашей строки? В JavaScript вы можете <dfn>избежать</dfn> цитаты, рассматривая ее как конец строки, помещая <dfn>обратную косую черту</dfn> ( <code>\</code> ) перед цитатой. <code>var sampleStr = &quot;Alan said, \&quot;Peter is learning JavaScript\&quot;.&quot;;</code> Это сигнализирует JavaScript, что следующая цитата не является концом строки, но должна появляться внутри строки. Поэтому, если вы должны были напечатать это на консоли, вы бы получили: <code>Alan said, &quot;Peter is learning JavaScript&quot;.</code> </section>
## Instructions
<section id="instructions"> Используйте <dfn>обратную косую черту,</dfn> чтобы назначить строку переменной <code>myStr</code> чтобы, если вы должны были ее распечатать на консоль, вы увидите: « <code>I am a &quot;double quoted&quot; string inside &quot;double quotes&quot;.</code> </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны использовать две двойные кавычки ( <code>&quot;</code> ) и четыре сэкономленные двойные кавычки ( <code>\&quot;</code> ).
testString: 'assert(code.match(/\\"/g).length === 4 && code.match(/[^\\]"/g).length === 2, "You should use two double quotes (<code>&quot;</code>) and four escaped double quotes (<code>&#92;&quot;</code>).");'
- text: 'Переменная myStr должна содержать строку: <code>I am a &quot;double quoted&quot; string inside &quot;double quotes&quot;.</code>'
testString: 'assert(myStr === "I am a \"double quoted\" string inside \"double quotes\".", "Variable myStr should contain the string: <code>I am a "double quoted" string inside "double quotes".</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var myStr = ""; // Change this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,71 @@
---
id: bd7123c9c448eddfaeb5bdef
title: Find the Length of a String
challengeType: 1
videoUrl: ''
localeTitle: Найти длину строки
---
## Description
<section id="description"> Вы можете найти длину значения <code>String</code> , написав <code>.length</code> после строковой переменной или строкового литерала. <code>&quot;Alan Peter&quot;.length; // 10</code> Например, если мы создали переменную <code>var firstName = &quot;Charles&quot;</code> , мы могли бы узнать, как долго строка <code>&quot;Charles&quot;</code> используется с использованием свойства <code>firstName.length</code> . </section>
## Instructions
<section id="instructions"> Используйте свойство <code>.length</code> чтобы подсчитать количество символов в переменной <code>lastName</code> и назначить его <code>lastNameLength</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>lastNameLength</code> должно быть равно восьми.
testString: 'assert((function(){if(typeof lastNameLength !== "undefined" && typeof lastNameLength === "number" && lastNameLength === 8){return true;}else{return false;}})(), "<code>lastNameLength</code> should be equal to eight.");'
- text: 'Вы должны получить длину <code>lastName</code> , используя <code>.length</code> как это: <code>lastName.length</code> .'
testString: 'assert((function(){if(code.match(/\.length/gi) && code.match(/\.length/gi).length >= 2 && code.match(/var lastNameLength \= 0;/gi) && code.match(/var lastNameLength \= 0;/gi).length >= 1){return true;}else{return false;}})(), "You should be getting the length of <code>lastName</code> by using <code>.length</code> like this: <code>lastName.length</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var firstNameLength = 0;
var firstName = "Ada";
firstNameLength = firstName.length;
// Setup
var lastNameLength = 0;
var lastName = "Lovelace";
// Only change code below this line.
lastNameLength = lastName;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,63 @@
---
id: 56533eb9ac21ba0edf2244ae
title: Finding a Remainder in JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Поиск остатка в JavaScript
---
## Description
<section id="description"> Оператор <dfn>остатка</dfn> <code>%</code> дает остаток от деления двух чисел. <strong>пример</strong> <blockquote> 5% 2 = 1, потому что <br> Math.floor (5/2) = 2 (Quotient) <br> 2 * 2 = 4 <br> 5 - 4 = 1 (Остаток) </blockquote> <strong>Применение</strong> <br> В математике число может быть проверено как четное или нечетное, проверяя остаток от деления числа на <code>2</code> . <blockquote> 17% 2 = 1 (17 - нечетное) <br> 48% 2 = 0 (48 равно) </blockquote> <strong>Заметка</strong> <br> Оператор <dfn>остатка</dfn> иногда некорректно называют оператором «модуль». Он очень похож на модуль, но не работает должным образом с отрицательными числами. </section>
## Instructions
<section id="instructions"> Установите <code>remainder</code> равный остальной части <code>11</code> деленной на <code>3</code> используя оператор <dfn>остатка</dfn> ( <code>%</code> ). </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>remainder</code> переменной должен быть инициализирован
testString: 'assert(/var\s+?remainder/.test(code), "The variable <code>remainder</code> should be initialized");'
- text: Стоимость <code>remainder</code> должна быть равна <code>2</code>
testString: 'assert(remainder === 2, "The value of <code>remainder</code> should be <code>2</code>");'
- text: Вы должны использовать оператор <code>%</code>
testString: 'assert(/\s+?remainder\s*?=\s*?.*%.*;/.test(code), "You should use the <code>%</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Only change code below this line
var remainder;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,68 @@
---
id: cf1111c1c11feddfaeb9bdef
title: Generate Random Fractions with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Генерировать случайные дроби с помощью JavaScript
---
## Description
<section id="description"> Случайные числа полезны для создания случайного поведения. JavaScript имеет функцию <code>Math.random()</code> которая генерирует случайное десятичное число между <code>0</code> (включительно) и не совсем до <code>1</code> (исключая). Таким образом, <code>Math.random()</code> может возвращать <code>0</code> но никогда не возвращать <code>1</code> <strong>Примечание</strong> <br> Подобно <a href="storing-values-with-the-assignment-operator" target="_blank">сохранению значений с помощью Equal Operator</a> , все вызовы функций будут разрешены до выполнения <code>return</code> , поэтому мы можем <code>return</code> значение функции <code>Math.random()</code> . </section>
## Instructions
<section id="instructions"> Измените <code>randomFraction</code> чтобы вернуть случайное число вместо возврата <code>0</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>randomFraction</code> должно возвращать случайное число.
testString: 'assert(typeof randomFraction() === "number", "<code>randomFraction</code> should return a random number.");'
- text: 'Число, возвращаемое <code>randomFraction</code> должно быть десятичным.'
testString: 'assert((randomFraction()+""). match(/\./g), "The number returned by <code>randomFraction</code> should be a decimal.");'
- text: Вы должны использовать <code>Math.random</code> для генерации случайного десятичного числа.
testString: 'assert(code.match(/Math\.random/g).length >= 0, "You should be using <code>Math.random</code> to generate the random decimal number.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function randomFraction() {
// Only change code below this line.
return 0;
// Only change code above this line.
}
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,70 @@
---
id: cf1111c1c12feddfaeb1bdef
title: Generate Random Whole Numbers with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Генерировать случайные целые числа с помощью JavaScript
---
## Description
<section id="description"> Замечательно, что мы можем генерировать случайные десятичные числа, но это еще более полезно, если мы используем его для генерации случайных целых чисел. <ol><li> Используйте <code>Math.random()</code> для генерации случайного десятичного знака. </li><li> Умножьте это случайное число на <code>20</code> . </li><li> Используйте другую функцию, <code>Math.floor()</code> чтобы округлить число до его ближайшего целого числа. </li></ol> Помните, что <code>Math.random()</code> никогда не может полностью вернуть <code>1</code> и, поскольку мы округливаем, на самом деле получить <code>20</code> невозможно. Этот метод даст нам целое число от <code>0</code> до <code>19</code> . Соединяя все вместе, это выглядит как наш код: <code>Math.floor(Math.random() * 20);</code> Мы вызываем <code>Math.random()</code> , умножая результат на 20, затем передавая значение функции <code>Math.floor()</code> чтобы округлить значение до ближайшего целого числа. </section>
## Instructions
<section id="instructions"> Используйте этот метод для генерации и возврата случайного целого числа от <code>0</code> до <code>9</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Результат <code>randomWholeNum</code> должен быть целым числом.
testString: 'assert(typeof randomWholeNum() === "number" && (function(){var r = randomWholeNum();return Math.floor(r) === r;})(), "The result of <code>randomWholeNum</code> should be a whole number.");'
- text: Вы должны использовать <code>Math.random</code> для генерации случайного числа.
testString: 'assert(code.match(/Math.random/g).length > 1, "You should be using <code>Math.random</code> to generate a random number.");'
- text: 'Вы должны умножить результат <code>Math.random</code> на 10, чтобы сделать его числом от нуля до девяти.'
testString: 'assert(code.match(/\s*?Math.random\s*?\(\s*?\)\s*?\*\s*?10[\D]\s*?/g) || code.match(/\s*?10\s*?\*\s*?Math.random\s*?\(\s*?\)\s*?/g), "You should have multiplied the result of <code>Math.random</code> by 10 to make it a number that is between zero and nine.");'
- text: Вы должны использовать <code>Math.floor</code> для удаления десятичной части числа.
testString: 'assert(code.match(/Math.floor/g).length > 1, "You should use <code>Math.floor</code> to remove the decimal part of the number.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var randomNumberBetween0and19 = Math.floor(Math.random() * 20);
function randomWholeNum() {
// Only change code below this line.
return Math.random();
}
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,80 @@
---
id: cf1111c1c12feddfaeb2bdef
title: Generate Random Whole Numbers within a Range
challengeType: 1
videoUrl: ''
localeTitle: Генерировать случайные целые числа в пределах диапазона
---
## Description
<section id="description"> Вместо того, чтобы генерировать случайное число между нулем и заданным числом, как это было раньше, мы можем сгенерировать случайное число, которое попадает в диапазон двух конкретных чисел. Для этого определим минимальное число <code>min</code> и максимальное число <code>max</code> . Вот формула, которую мы будем использовать. Найдите минутку, чтобы прочитать ее и попытайтесь понять, что делает этот код: <code>Math.floor(Math.random() * (max - min + 1)) + min</code> </section>
## Instructions
<section id="instructions"> Создайте функцию <code>randomRange</code> которая принимает диапазон <code>myMin</code> и <code>myMax</code> и возвращает случайное число, которое больше или равно <code>myMin</code> , и меньше или равно <code>myMax</code> включительно. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'Наименьшее случайное число, которое может быть создано <code>randomRange</code> должно быть равно минимальному числу <code>myMin</code> .'
testString: 'assert(calcMin === 5, "The lowest random number that can be generated by <code>randomRange</code> should be equal to your minimum number, <code>myMin</code>.");'
- text: 'Наибольшее случайное число, которое может быть сгенерировано <code>randomRange</code> должно быть равно максимальному числу <code>myMax</code> .'
testString: 'assert(calcMax === 15, "The highest random number that can be generated by <code>randomRange</code> should be equal to your maximum number, <code>myMax</code>.");'
- text: 'Случайное число, генерируемое <code>randomRange</code> должно быть целым числом, а не десятичным.'
testString: 'assert(randomRange(0,1) % 1 === 0 , "The random number generated by <code>randomRange</code> should be an integer, not a decimal.");'
- text: <code>randomRange</code> должен использовать как <code>myMax</code> и <code>myMin</code> и возвращать случайное число в вашем диапазоне.
testString: 'assert((function(){if(code.match(/myMax/g).length > 1 && code.match(/myMin/g).length > 2 && code.match(/Math.floor/g) && code.match(/Math.random/g)){return true;}else{return false;}})(), "<code>randomRange</code> should use both <code>myMax</code> and <code>myMin</code>, and return a random number in your range.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
function ourRandomRange(ourMin, ourMax) {
return Math.floor(Math.random() * (ourMax - ourMin + 1)) + ourMin;
}
ourRandomRange(1, 9);
// Only change code below this line.
function randomRange(myMin, myMax) {
return 0; // Change this line
}
// Change these values to test your function
var myRandom = randomRange(5, 15);
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,109 @@
---
id: 56533eb9ac21ba0edf2244be
title: Global Scope and Functions
challengeType: 1
videoUrl: ''
localeTitle: Глобальная область и функции
---
## Description
<section id="description"> В JavaScript <dfn>область видимости</dfn> относится к видимости переменных. Переменные, определенные вне функционального блока, имеют <dfn>глобальную</dfn> область. Это означает, что их можно увидеть везде в вашем JavaScript-коде. Переменные, которые используются без ключевого слова <code>var</code> , автоматически создаются в <code>global</code> области. Это может привести к непредвиденным последствиям в другом месте вашего кода или при повторном запуске функции. Вы всегда должны объявлять переменные с помощью <code>var</code> . </section>
## Instructions
<section id="instructions"> Используя <code>var</code> , объявляйте <code>global</code> переменную <code>myGlobal</code> вне любой функции. Инициализируйте его со значением <code>10</code> . Внутри функции <code>fun1</code> присвойте <code>5</code> <code>oopsGlobal</code> <strong><em>без</em></strong> использования ключевого слова <code>var</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myGlobal</code> следует определить
testString: 'assert(typeof myGlobal != "undefined", "<code>myGlobal</code> should be defined");'
- text: <code>myGlobal</code> должен иметь значение <code>10</code>
testString: 'assert(myGlobal === 10, "<code>myGlobal</code> should have a value of <code>10</code>");'
- text: <code>myGlobal</code> следует объявить с помощью ключевого слова <code>var</code>
testString: 'assert(/var\s+myGlobal/.test(code), "<code>myGlobal</code> should be declared using the <code>var</code> keyword");'
- text: <code>oopsGlobal</code> должен быть глобальной переменной и иметь значение <code>5</code>
testString: 'assert(typeof oopsGlobal != "undefined" && oopsGlobal === 5, "<code>oopsGlobal</code> should be a global variable and have a value of <code>5</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Declare your variable here
function fun1() {
// Assign 5 to oopsGlobal Here
}
// Only change code above this line
function fun2() {
var output = "";
if (typeof myGlobal != "undefined") {
output += "myGlobal: " + myGlobal;
}
if (typeof oopsGlobal != "undefined") {
output += " oopsGlobal: " + oopsGlobal;
}
console.log(output);
}
```
</div>
### Before Test
<div id='js-setup'>
```js
var logOutput = "";
var originalConsole = console
function capture() {
var nativeLog = console.log;
console.log = function (message) {
logOutput = message;
if(nativeLog.apply) {
nativeLog.apply(originalConsole, arguments);
} else {
var nativeMsg = Array.prototype.slice.apply(arguments).join(' ');
nativeLog(nativeMsg);
}
};
}
function uncapture() {
console.log = originalConsole.log;
}
var oopsGlobal;
capture();
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,65 @@
---
id: 56533eb9ac21ba0edf2244c0
title: Global vs. Local Scope in Functions
challengeType: 1
videoUrl: ''
localeTitle: Глобальная и локальная область функций
---
## Description
<section id="description"> Можно иметь как <dfn>локальные, так</dfn> и <dfn>глобальные</dfn> переменные с тем же именем. Когда вы это делаете, <code>local</code> переменная имеет приоритет над <code>global</code> переменной. В этом примере: <blockquote> var someVar = &quot;Hat&quot;; <br> function myFun () { <br> var someVar = &quot;Голова&quot;; <br> return someVar; <br> } </blockquote> Функция <code>myFun</code> вернет <code>&quot;Head&quot;</code> потому что присутствует <code>local</code> версия переменной. </section>
## Instructions
<section id="instructions"> Добавьте локальную переменную в функцию <code>myOutfit</code> чтобы переопределить значение <code>outerWear</code> с помощью <code>&quot;sweater&quot;</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Не изменяйте значение глобального <code>outerWear</code>
testString: 'assert(outerWear === "T-Shirt", "Do not change the value of the global <code>outerWear</code>");'
- text: <code>myOutfit</code> должен вернуть <code>&quot;sweater&quot;</code>
testString: 'assert(myOutfit() === "sweater", "<code>myOutfit</code> should return <code>"sweater"</code>");'
- text: Не меняйте оператор возврата
testString: 'assert(/return outerWear/.test(code), "Do not change the return statement");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var outerWear = "T-Shirt";
function myOutfit() {
// Only change code below this line
// Only change code above this line
return outerWear;
}
myOutfit();
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,80 @@
---
id: 5664820f61c48e80c9fa476c
title: Golf Code
challengeType: 1
videoUrl: ''
localeTitle: Гольф-код
---
## Description
<section id="description"> В игре в <a href="https://en.wikipedia.org/wiki/Golf" target="_blank">гольф</a> каждое отверстие имеет <code>par</code> означая среднее число <code>strokes</code> игрок в гольф , как ожидается , чтобы сделать для того , чтобы утопить мяч в отверстие , чтобы закончить игру. В зависимости от того , насколько выше или ниже <code>par</code> ваши <code>strokes</code> , там есть другое прозвище. Ваша функция будет передана параметрам <code>par</code> и <code>strokes</code> . Верните правильную строку в соответствии с этой таблицей, которая отображает штрихи в порядке приоритета; верхняя (самая высокая) до нижней (самая низкая): <table class="table table-striped"><thead><tr><th> Штрихи </th><th> Вернуть </th></tr></thead><tbody><tr><td> 1 </td><td> &quot;Отверстие в одном!&quot; </td></tr><tr><td> &lt;= par - 2 </td><td> «Орел» </td></tr><tr><td> пар - 1 </td><td> &quot;Птичка&quot; </td></tr><tr><td> паритет </td><td> «Пар» </td></tr><tr><td> par + 1 </td><td> «Пугало» </td></tr><tr><td> par + 2 </td><td> &quot;Двойной Богей&quot; </td></tr><tr><td> &gt; = par + 3 </td><td> &quot;Иди домой!&quot; </td></tr></tbody></table> <code>par</code> и <code>strokes</code> всегда будут числовыми и положительными. Мы добавили массив всех имен для вашего удобства. </section>
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>golfScore(4, 1)</code> должен вернуть «Hole-in-one!».'
testString: 'assert(golfScore(4, 1) === "Hole-in-one!", "<code>golfScore(4, 1)</code> should return "Hole-in-one!"");'
- text: '<code>golfScore(4, 2)</code> должен вернуть «Eagle»'
testString: 'assert(golfScore(4, 2) === "Eagle", "<code>golfScore(4, 2)</code> should return "Eagle"");'
- text: '<code>golfScore(5, 2)</code> должен вернуть «Eagle»'
testString: 'assert(golfScore(5, 2) === "Eagle", "<code>golfScore(5, 2)</code> should return "Eagle"");'
- text: '<code>golfScore(4, 3)</code> должен вернуть «Birdie»'
testString: 'assert(golfScore(4, 3) === "Birdie", "<code>golfScore(4, 3)</code> should return "Birdie"");'
- text: '<code>golfScore(4, 4)</code> должен вернуть «Par»'
testString: 'assert(golfScore(4, 4) === "Par", "<code>golfScore(4, 4)</code> should return "Par"");'
- text: '<code>golfScore(1, 1)</code> должен вернуть «Hole-in-one!».'
testString: 'assert(golfScore(1, 1) === "Hole-in-one!", "<code>golfScore(1, 1)</code> should return "Hole-in-one!"");'
- text: '<code>golfScore(5, 5)</code> должен вернуть «Par»'
testString: 'assert(golfScore(5, 5) === "Par", "<code>golfScore(5, 5)</code> should return "Par"");'
- text: '<code>golfScore(4, 5)</code> должен вернуть «Bogey»'
testString: 'assert(golfScore(4, 5) === "Bogey", "<code>golfScore(4, 5)</code> should return "Bogey"");'
- text: '<code>golfScore(4, 6)</code> должен вернуть «Double Bogey»'
testString: 'assert(golfScore(4, 6) === "Double Bogey", "<code>golfScore(4, 6)</code> should return "Double Bogey"");'
- text: '<code>golfScore(4, 7)</code> должен вернуться «Go Home!».'
testString: 'assert(golfScore(4, 7) === "Go Home!", "<code>golfScore(4, 7)</code> should return "Go Home!"");'
- text: '<code>golfScore(5, 9)</code> должен вернуться «Go Home!».'
testString: 'assert(golfScore(5, 9) === "Go Home!", "<code>golfScore(5, 9)</code> should return "Go Home!"");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
// Only change code below this line
return "Change Me";
// Only change code above this line
}
// Change these values to test
golfScore(5, 4);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,66 @@
---
id: 56533eb9ac21ba0edf2244ac
title: Increment a Number with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Увеличение номера с помощью JavaScript
---
## Description
<section id="description"> Вы можете легко <dfn>увеличить</dfn> или добавьте к переменной с <code>++</code> оператора. <code>i++;</code> эквивалентно <code>i = i + 1;</code> <strong>Заметка</strong> <br> Вся строка становится <code>i++;</code> , устраняя необходимость равенства знака. </section>
## Instructions
<section id="instructions"> Измените код, чтобы использовать оператор <code>++</code> на <code>myVar</code> . <strong>намек</strong> <br> Подробнее об <a href="https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Increment_()" target="_blank">арифметических операторах - Increment (++)</a> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myVar</code> должен равняться <code>88</code>
testString: 'assert(myVar === 88, "<code>myVar</code> should equal <code>88</code>");'
- text: <code>myVar = myVar + 1;</code> следует изменить
testString: 'assert(/var\s*myVar\s*=\s*87;\s*\/*.*\s*([+]{2}\s*myVar|myVar\s*[+]{2});/.test(code), "<code>myVar = myVar + 1;</code> should be changed");'
- text: Использовать оператор <code>++</code>
testString: 'assert(/[+]{2}\s*myVar|myVar\s*[+]{2}/.test(code), "Use the <code>++</code> operator");'
- text: Не меняйте код над строкой
testString: 'assert(/var myVar = 87;/.test(code), "Do not change code above the line");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var myVar = 87;
// Only change code below this line
myVar = myVar + 1;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,60 @@
---
id: 56533eb9ac21ba0edf2244a9
title: Initializing Variables with the Assignment Operator
challengeType: 1
videoUrl: ''
localeTitle: Инициализация переменных с помощью оператора присваивания
---
## Description
<section id="description"> Обычно <dfn>инициализировать</dfn> переменную до начального значения в той же строке, что и объявлено. <code>var myVar = 0;</code> Создает новую переменную <code>myVar</code> и присваивает ей начальное значение <code>0</code> . </section>
## Instructions
<section id="instructions"> Определите переменную <code>a</code> с <code>var</code> и инициализируйте ее значением <code>9</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Инициализировать значение <code>a</code> до значения <code>9</code>
testString: 'assert(/var\s+a\s*=\s*9\s*/.test(code), "Initialize <code>a</code> to a value of <code>9</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourVar = 19;
// Only change code below this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,76 @@
---
id: 56533eb9ac21ba0edf2244db
title: Introducing Else If Statements
challengeType: 1
videoUrl: ''
localeTitle: Представляем Else If Statementments
---
## Description
<section id="description"> Если у вас есть несколько условий, которые необходимо устранить, вы можете связать, <code>if</code> инструкции вместе с инструкциями <code>else if</code> . <blockquote> если (num&gt; 15) { <br> возвращение «Больше 15»; <br> } else if (num &lt;5) { <br> return «Меньше 5»; <br> } else { <br> возвращение «от 5 до 15»; <br> } </blockquote></section>
## Instructions
<section id="instructions"> Преобразуйте логику, чтобы использовать инструкции <code>else if</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны иметь по крайней мере два <code>else</code> заявления
testString: 'assert(code.match(/else/g).length > 1, "You should have at least two <code>else</code> statements");'
- text: У вас должно быть как минимум два оператора <code>if</code>
testString: 'assert(code.match(/if/g).length > 1, "You should have at least two <code>if</code> statements");'
- text: У вас должно быть закрытие и открытие фигурных скобок для каждого условия
testString: 'assert(code.match(/if\s*\((.+)\)\s*\{[\s\S]+\}\s*else if\s*\((.+)\)\s*\{[\s\S]+\}\s*else\s*\{[\s\S]+\s*\}/), "You should have closing and opening curly braces for each condition in your if else statement");'
- text: <code>testElseIf(0)</code> должен возвращать значение &quot;Меньше 5&quot;
testString: 'assert(testElseIf(0) === "Smaller than 5", "<code>testElseIf(0)</code> should return "Smaller than 5"");'
- text: '<code>testElseIf(5)</code> должен возвращать «Между 5 и 10»,'
testString: 'assert(testElseIf(5) === "Between 5 and 10", "<code>testElseIf(5)</code> should return "Between 5 and 10"");'
- text: '<code>testElseIf(7)</code> должен возвращать «от 5 до 10»,'
testString: 'assert(testElseIf(7) === "Between 5 and 10", "<code>testElseIf(7)</code> should return "Between 5 and 10"");'
- text: '<code>testElseIf(10)</code> должен возвращать «Между 5 и 10»,'
testString: 'assert(testElseIf(10) === "Between 5 and 10", "<code>testElseIf(10)</code> should return "Between 5 and 10"");'
- text: '<code>testElseIf(12)</code> должен возвращать «Больше 10»,'
testString: 'assert(testElseIf(12) === "Greater than 10", "<code>testElseIf(12)</code> should return "Greater than 10"");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testElseIf(val) {
if (val > 10) {
return "Greater than 10";
}
if (val < 5) {
return "Smaller than 5";
}
return "Between 5 and 10";
}
// Change this value to test
testElseIf(7);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,78 @@
---
id: 56533eb9ac21ba0edf2244da
title: Introducing Else Statements
challengeType: 1
videoUrl: ''
localeTitle: Введение в новые заявления
---
## Description
<section id="description"> Когда условие для оператора <code>if</code> истинно, выполняется блок кода после него. Как насчет того, когда это условие ложно? Обычно ничего не происходило. С помощью инструкции <code>else</code> может выполняться альтернативный блок кода. <blockquote> если (num&gt; 10) { <br> возвращение «Больше, чем 10»; <br> } else { <br> вернуть «10 или меньше»; <br> } </blockquote></section>
## Instructions
<section id="instructions"> Объедините операторы <code>if</code> в один оператор <code>if/else</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны иметь только один оператор <code>if</code> в редакторе
testString: 'assert(code.match(/if/g).length === 1, "You should only have one <code>if</code> statement in the editor");'
- text: Вы должны использовать инструкцию <code>else</code>
testString: 'assert(/else/g.test(code), "You should use an <code>else</code> statement");'
- text: <code>testElse(4)</code> должен возвращать «5 или меньше»
testString: 'assert(testElse(4) === "5 or Smaller", "<code>testElse(4)</code> should return "5 or Smaller"");'
- text: <code>testElse(5)</code> должен возвращать «5 или меньше»
testString: 'assert(testElse(5) === "5 or Smaller", "<code>testElse(5)</code> should return "5 or Smaller"");'
- text: '<code>testElse(6)</code> должен возвращать «Больше, чем 5»,'
testString: 'assert(testElse(6) === "Bigger than 5", "<code>testElse(6)</code> should return "Bigger than 5"");'
- text: <code>testElse(10)</code> должен возвращать «Больше 5»
testString: 'assert(testElse(10) === "Bigger than 5", "<code>testElse(10)</code> should return "Bigger than 5"");'
- text: Не меняйте код выше или ниже строк.
testString: 'assert(/var result = "";/.test(code) && /return result;/.test(code), "Do not change the code above or below the lines.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function testElse(val) {
var result = "";
// Only change code below this line
if (val > 5) {
result = "Bigger than 5";
}
if (val <= 5) {
result = "5 or Smaller";
}
// Only change code above this line
return result;
}
// Change this value to test
testElse(4);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,69 @@
---
id: 56104e9e514f539506016a5c
title: Iterate Odd Numbers With a For Loop
challengeType: 1
videoUrl: ''
localeTitle: Итерировать нечетные числа с помощью цикла
---
## Description
<section id="description"> Для циклов не нужно повторять одно за раз. Изменяя наше <code>final-expression</code> , мы можем считать четными числами. Мы начнем с <code>i = 0</code> и цикл while <code>i &lt; 10</code> . Мы будем увеличивать <code>i</code> на 2 каждый цикл с <code>i += 2</code> . <blockquote> var ourArray = []; <br> для (var i = 0; i &lt;10; i + = 2) { <br> ourArray.push (я); <br> } </blockquote> <code>ourArray</code> будет содержать <code>[0,2,4,6,8]</code> . Давайте изменим нашу <code>initialization</code> чтобы мы могли рассчитывать по нечетным числам. </section>
## Instructions
<section id="instructions"> Нажимайте нечетные числа от 1 до 9 до <code>myArray</code> используя цикл <code>for</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны использовать <code>for</code> петли для этого.
testString: 'assert(code.match(/for\s*\(/g).length > 1, "You should be using a <code>for</code> loop for this.");'
- text: '<code>myArray</code> должен равняться <code>[1,3,5,7,9]</code> .'
testString: 'assert.deepEqual(myArray, [1,3,5,7,9], "<code>myArray</code> should equal <code>[1,3,5,7,9]</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = [];
for (var i = 0; i < 10; i += 2) {
ourArray.push(i);
}
// Setup
var myArray = [];
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,74 @@
---
id: 5675e877dbd60be8ad28edc6
title: Iterate Through an Array with a For Loop
challengeType: 1
videoUrl: ''
localeTitle: Итерация через массив с петлей
---
## Description
<section id="description"> Общей задачей в JavaScript является итерация содержимого массива. Один из способов сделать это - цикл <code>for</code> . Этот код выводит каждый элемент массива <code>arr</code> на консоль: <blockquote> var arr = [10,9,8,7,6]; <br> для (var i = 0; i &lt;arr.length; i ++) { <br> console.log (обр [я]); <br> } </blockquote> Помните, что массивы имеют нулевую нумерацию, что означает, что последний индекс массива - длина - 1. Наше <dfn>условие</dfn> для этого цикла равно <code>i &lt; arr.length</code> , которое останавливается, когда <code>i</code> является длиной - 1. </section>
## Instructions
<section id="instructions"> Объявить и инициализировать значение переменной <code>total</code> равным <code>0</code> . Используйте цикл <code>for</code> чтобы добавить значение каждого элемента массива <code>myArr</code> в <code>total</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>total</code> должно быть объявлено и инициализировано до 0
testString: 'assert(code.match(/var.*?total\s*=\s*0.*?;/), "<code>total</code> should be declared and initialized to 0");'
- text: <code>total</code> должна составлять 20
testString: 'assert(total === 20, "<code>total</code> should equal 20");'
- text: Вы должны использовать цикл <code>for</code> для итерации через <code>myArr</code>
testString: 'assert(code.match(/for\s*\(/g).length > 1 && code.match(/myArr\s*\[/), "You should use a <code>for</code> loop to iterate through <code>myArr</code>");'
- text: Не устанавливать <code>total</code> значение 20 напрямую
testString: 'assert(!code.match(/total[\s\+\-]*=\s*(\d(?!\s*[;,])|[1-9])/g), "Do not set <code>total</code> to 20 directly");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArr = [ 9, 10, 11, 12];
var ourTotal = 0;
for (var i = 0; i < ourArr.length; i++) {
ourTotal += ourArr[i];
}
// Setup
var myArr = [ 2, 3, 4, 5, 6];
// Only change code below this line
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,70 @@
---
id: 5a2efd662fb457916e1fe604
title: Iterate with JavaScript Do...While Loops
challengeType: 1
videoUrl: ''
localeTitle: Итерация с помощью JavaScript Do ... While Loops
---
## Description
<section id="description"> Вы можете запустить один и тот же код несколько раз, используя цикл. Следующий тип цикла, который вы узнаете, называется циклом « <code>do...while</code> », потому что он сначала « <code>do</code> » один проход кода внутри цикла, независимо от того, что происходит, а затем он запускает « <code>while</code> », указанное условие истинно и останавливается, как только это условие перестает быть истинным. Давайте посмотрим на пример. <blockquote> var ourArray = []; <br> var i = 0; <br> делать { <br> ourArray.push (я); <br> я ++; <br> } while (i &lt;5); </blockquote> Это ведет себя так же, как вы ожидали бы с любым другим типом цикла, и результирующий массив будет выглядеть как <code>[0, 1, 2, 3, 4]</code> . Однако то, что делает <code>do...while</code> отличается от других циклов, - это то, как оно ведет себя, когда условие не выполняется при первой проверке. Давайте посмотрим на это в действии. Вот регулярный цикл while, который будет запускать код в цикле, пока <code>i &lt; 5</code> . <blockquote> var ourArray = []; <br> var i = 5; <br> тогда как (i &lt;5) { <br> ourArray.push (я); <br> я ++; <br> } </blockquote> Обратите внимание, что мы инициализируем значение <code>i</code> равным 5. Когда мы выполняем следующую строку, мы замечаем, что <code>i</code> не меньше 5. Таким образом, мы не выполняем код внутри цикла. В результате <code>ourArray</code> будет добавлен к нему, поэтому он будет выглядеть так <code>[]</code> когда весь код в приведенном выше примере завершится. Теперь взгляните на цикл <code>do...while</code> while. <blockquote> var ourArray = []; <br> var i = 5; <br> делать { <br> ourArray.push (я); <br> я ++; <br> } while (i &lt;5); </blockquote> В этом случае мы инициализируем значение <code>i</code> как 5, как и в цикле while. Когда мы переходим к следующей строке, нет никакой проверки значения <code>i</code> , поэтому мы переходим к коду внутри фигурных скобок и выполняем его. Мы добавим один элемент в массив и увеличим <code>i</code> до того, как мы перейдем к проверке состояния. Затем, когда мы перейдем к проверке, если <code>i &lt; 5</code> видим, что <code>i</code> теперь 6, что не позволяет выполнить условную проверку. Итак, мы выходим из цикла и выполняем его. В конце приведенного выше примера значение <code>ourArray</code> равно <code>[5]</code> . По существу, цикл <code>do...while</code> while гарантирует, что код внутри цикла будет запускаться хотя бы один раз. Давайте попробуем <code>do...while</code> loop to work, нажав значения в массив. </section>
## Instructions
<section id="instructions"> Измените <code>while</code> цикл в коде для <code>do...while</code> в <code>myArray</code> <code>i</code> <code>11</code> <code>do...while</code> петли так, чтобы петля будет толкать число 10 до <code>myArray</code> , и <code>i</code> буду равен <code>11</code> , когда ваш код завершения работы. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны использовать <code>do...while</code> loop для этого.
testString: 'assert(code.match(/do/g), "You should be using a <code>do...while</code> loop for this.");'
- text: '<code>myArray</code> должен равняться <code>[10]</code> .'
testString: 'assert.deepEqual(myArray, [10], "<code>myArray</code> should equal <code>[10]</code>.");'
- text: <code>i</code> должен равняться <code>11</code>
testString: 'assert.deepEqual(i, 11, "<code>i</code> should equal <code>11</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var myArray = [];
var i = 10;
// Only change code below this line.
while (i < 5) {
myArray.push(i);
i++;
}
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,69 @@
---
id: cf1111c1c11feddfaeb5bdef
title: Iterate with JavaScript For Loops
challengeType: 1
videoUrl: ''
localeTitle: Итерация с JavaScript для циклов
---
## Description
<section id="description"> Вы можете запустить один и тот же код несколько раз, используя цикл. Наиболее распространенный тип цикла JavaScript называется « <code>for loop</code> », потому что он запускает «для» определенное количество раз. Для циклов объявляются три необязательных выражения, разделенные точкой с запятой: <code>for ([initialization]; [condition]; [final-expression])</code> Оператор <code>initialization</code> выполняется один раз только до начала цикла. Он обычно используется для определения и настройки вашей переменной цикла. Оператор <code>condition</code> оценивается в начале каждой итерации цикла и будет продолжаться до тех пор, пока он оценит значение <code>true</code> . Когда <code>condition</code> является <code>false</code> в начале итерации, цикл прекратит выполнение. Это означает, что если <code>condition</code> начинается как <code>false</code> , ваш цикл никогда не будет выполняться. <code>final-expression</code> выполняется в конце каждой итерации цикла до проверки следующего <code>condition</code> и обычно используется для увеличения или уменьшения вашего счетчика циклов. В следующем примере мы инициализируем с <code>i = 0</code> и итерацией, пока наше условие <code>i &lt; 5</code> истинно. Мы будем увеличивать <code>i</code> на <code>1</code> в каждой итерации цикла с <code>i++</code> качестве нашего <code>final-expression</code> . <blockquote> var ourArray = []; <br> для (var i = 0; i &lt;5; i ++) { <br> ourArray.push (я); <br> } </blockquote> <code>ourArray</code> будет содержать <code>[0,1,2,3,4]</code> . </section>
## Instructions
<section id="instructions"> Используйте цикл <code>for</code> для работы, чтобы нажимать значения с 1 по 5 на <code>myArray</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны использовать <code>for</code> петли для этого.
testString: 'assert(code.match(/for\s*\(/g).length > 1, "You should be using a <code>for</code> loop for this.");'
- text: '<code>myArray</code> должен равняться <code>[1,2,3,4,5]</code> .'
testString: 'assert.deepEqual(myArray, [1,2,3,4,5], "<code>myArray</code> should equal <code>[1,2,3,4,5]</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = [];
for (var i = 0; i < 5; i++) {
ourArray.push(i);
}
// Setup
var myArray = [];
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,62 @@
---
id: cf1111c1c11feddfaeb1bdef
title: Iterate with JavaScript While Loops
challengeType: 1
videoUrl: ''
localeTitle: 'Итерации с помощью JavaScript, в то время как циклы'
---
## Description
<section id="description"> Вы можете запустить один и тот же код несколько раз, используя цикл. Первый тип цикла мы узнаем , что называется « в <code>while</code> » цикл , так как он работает « а» заданное условие истинно , и не остановится , как только это условие уже не так. <blockquote> var ourArray = []; <br> var i = 0; <br> тогда как (i &lt;5) { <br> ourArray.push (я); <br> я ++; <br> } </blockquote> Попробуем получить цикл while для работы, нажав значения в массив. </section>
## Instructions
<section id="instructions"> Нажмите цифры от 0 до 4 , чтобы <code>myArray</code> используя <code>while</code> цикл. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы должны использовать <code>while</code> петлю для этого.
testString: 'assert(code.match(/while/g), "You should be using a <code>while</code> loop for this.");'
- text: '<code>myArray</code> должен равняться <code>[0,1,2,3,4]</code> .'
testString: 'assert.deepEqual(myArray, [0,1,2,3,4], "<code>myArray</code> should equal <code>[0,1,2,3,4]</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var myArray = [];
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,96 @@
---
id: 56533eb9ac21ba0edf2244bf
title: Local Scope and Functions
challengeType: 1
videoUrl: ''
localeTitle: Локальная область и функции
---
## Description
<section id="description"> Переменные, объявленные внутри функции, а также параметры функции имеют <dfn>локальную</dfn> область. Это означает, что они видны только внутри этой функции. Вот функция <code>myTest</code> с локальной переменной <code>loc</code> . <blockquote> function myTest () { <br> var loc = &quot;foo&quot;; <br> console.log (LOC); <br> } <br> MyTest (); // logs &quot;foo&quot; <br> console.log (LOC); // loc не определен </blockquote> <code>loc</code> не определяется вне функции. </section>
## Instructions
<section id="instructions"> Объявите локальную переменную <code>myVar</code> внутри <code>myLocalScope</code> . Запустите тесты, а затем следуйте инструкциям, прокомментированным в редакторе. <strong>намек</strong> <br> Обновление страницы может помочь, если вы застряли. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Глобальная переменная <code>myVar</code>
testString: 'assert(typeof myVar === "undefined", "No global <code>myVar</code> variable");'
- text: Добавьте локальную переменную <code>myVar</code>
testString: 'assert(/var\s+myVar/.test(code), "Add a local <code>myVar</code> variable");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function myLocalScope() {
'use strict'; // you shouldn't need to edit this line
console.log(myVar);
}
myLocalScope();
// Run and check the console
// myVar is not defined outside of myLocalScope
console.log(myVar);
// Now remove the console log line to pass the test
```
</div>
### Before Test
<div id='js-setup'>
```js
var logOutput = "";
var originalConsole = console
function capture() {
var nativeLog = console.log;
console.log = function (message) {
logOutput = message;
if(nativeLog.apply) {
nativeLog.apply(originalConsole, arguments);
} else {
var nativeMsg = Array.prototype.slice.apply(arguments).join(' ');
nativeLog(nativeMsg);
}
};
}
function uncapture() {
console.log = originalConsole.log;
}
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,64 @@
---
id: 5690307fddb111c6084545d7
title: Logical Order in If Else Statements
challengeType: 1
videoUrl: ''
localeTitle: Логический порядок в остальных случаях
---
## Description
<section id="description"> Порядок важен в <code>if</code> , <code>else if</code> . Функция выполняется сверху вниз, поэтому вы хотите быть осторожным с тем, что должно быть сделано первым. Возьмем эти две функции в качестве примера. Вот первый: <blockquote> функция foo (x) { <br> если (x &lt;1) { <br> return «Меньше одного»; <br> } else if (x &lt;2) { <br> return «Меньше двух»; <br> } else { <br> return «Больше или равно двум»; <br> } <br> } </blockquote> А второй просто переключает порядок утверждений: <blockquote> функциональная панель (x) { <br> если (x &lt;2) { <br> return «Меньше двух»; <br> } else if (x &lt;1) { <br> return «Меньше одного»; <br> } else { <br> return «Больше или равно двум»; <br> } <br> } </blockquote> Хотя эти две функции выглядят почти одинаковыми, если мы передаем число для обоих, мы получаем разные выходы. <blockquote> foo (0) // «Меньше одного» <br> bar (0) // «Менее двух» </blockquote></section>
## Instructions
<section id="instructions"> Измените порядок логики в функции так, чтобы она вернула правильные утверждения во всех случаях. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>orderMyLogic(4)</code> должен возвращать «Менее 5»
testString: 'assert(orderMyLogic(4) === "Less than 5", "<code>orderMyLogic(4)</code> should return "Less than 5"");'
- text: '<code>orderMyLogic(6)</code> должен вернуть «Менее 10»,'
testString: 'assert(orderMyLogic(6) === "Less than 10", "<code>orderMyLogic(6)</code> should return "Less than 10"");'
- text: '<code>orderMyLogic(11)</code> должен возвращать «Больше или равно 10»,'
testString: 'assert(orderMyLogic(11) === "Greater than or equal to 10", "<code>orderMyLogic(11)</code> should return "Greater than or equal to 10"");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function orderMyLogic(val) {
if (val < 10) {
return "Less than 10";
} else if (val < 5) {
return "Less than 5";
} else {
return "Greater than or equal to 10";
}
}
// Change this value to test
orderMyLogic(7);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,70 @@
---
id: 56bbb991ad1ed5201cd392cc
title: Manipulate Arrays With pop()
challengeType: 1
videoUrl: ''
localeTitle: Манипулировать массивами С помощью pop ()
---
## Description
<section id="description"> Другой способ изменить данные в массиве - с помощью функции <code>.pop()</code> . <code>.pop()</code> используется для « <code>.pop()</code> » значения из конца массива. Мы можем сохранить это значение «выскочил», присвоив его переменной. Другими словами, <code>.pop()</code> удаляет последний элемент из массива и возвращает этот элемент. Любой тип записи можно «выскочить» из массива - числа, строки, даже вложенные массивы. <blockquote> <code>var threeArr = [1, 4, 6]; <br> var oneDown = threeArr.pop(); <br> console.log(oneDown); // Returns 6 <br> console.log(threeArr); // Returns [1, 4]</code> </blockquote> </section>
## Instructions
<section id="instructions"> Используйте <code>.pop()</code> чтобы удалить последний элемент из <code>myArray</code> , назначив значение «popped off» для <code>removedFromMyArray</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>myArray</code> должен содержать только <code>[[&quot;John&quot;, 23]]</code> .'
testString: 'assert((function(d){if(d[0][0] == "John" && d[0][1] === 23 && d[1] == undefined){return true;}else{return false;}})(myArray), "<code>myArray</code> should only contain <code>[["John", 23]]</code>.");'
- text: Использовать <code>pop()</code> на <code>myArray</code>
testString: 'assert(/removedFromMyArray\s*=\s*myArray\s*.\s*pop\s*(\s*)/.test(code), "Use <code>pop()</code> on <code>myArray</code>");'
- text: '<code>removedFromMyArray</code> должен содержать только <code>[&quot;cat&quot;, 2]</code> .'
testString: 'assert((function(d){if(d[0] == "cat" && d[1] === 2 && d[2] == undefined){return true;}else{return false;}})(removedFromMyArray), "<code>removedFromMyArray</code> should only contain <code>["cat", 2]</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = [1,2,3];
var removedFromOurArray = ourArray.pop();
// removedFromOurArray now equals 3, and ourArray now equals [1,2]
// Setup
var myArray = [["John", 23], ["cat", 2]];
// Only change code below this line.
var removedFromMyArray;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,65 @@
---
id: 56bbb991ad1ed5201cd392cb
title: Manipulate Arrays With push()
challengeType: 1
videoUrl: ''
localeTitle: Манипулировать массивами С помощью push ()
---
## Description
<section id="description"> Простым способом добавления данных в конец массива является функция <code>push()</code> . <code>.push()</code> принимает один или несколько <dfn>параметров</dfn> и «нажимает» их на конец массива. <blockquote> var arr = [1,2,3]; <br> arr.push (4); <br> // arr теперь [1,2,3,4] </blockquote></section>
## Instructions
<section id="instructions"> Нажмите <code>[&quot;dog&quot;, 3]</code> на конец переменной <code>myArray</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>myArray</code> должен теперь равняться <code>[[&quot;John&quot;, 23], [&quot;cat&quot;, 2], [&quot;dog&quot;, 3]]</code> .'
testString: 'assert((function(d){if(d[2] != undefined && d[0][0] == "John" && d[0][1] === 23 && d[2][0] == "dog" && d[2][1] === 3 && d[2].length == 2){return true;}else{return false;}})(myArray), "<code>myArray</code> should now equal <code>[["John", 23], ["cat", 2], ["dog", 3]]</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = ["Stimpson", "J", "cat"];
ourArray.push(["happy", "joy"]);
// ourArray now equals ["Stimpson", "J", "cat", ["happy", "joy"]]
// Setup
var myArray = [["John", 23], ["cat", 2]];
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,68 @@
---
id: 56bbb991ad1ed5201cd392cd
title: Manipulate Arrays With shift()
challengeType: 1
videoUrl: ''
localeTitle: Манипулировать массивами со сдвигом ()
---
## Description
<section id="description"> <code>pop()</code> всегда удаляет последний элемент массива. Что делать, если вы хотите удалить первый? Вот где <code>.shift()</code> . Он работает так же, как <code>.pop()</code> , за исключением того, что он удаляет первый элемент вместо последнего. </section>
## Instructions
<section id="instructions"> Используйте <code>.shift()</code> чтобы удалить первый элемент из <code>myArray</code> , присвоив значение «shifted off» <code>removedFromMyArray</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>myArray</code> теперь должен равняться <code>[[&quot;dog&quot;, 3]]</code> .'
testString: 'assert((function(d){if(d[0][0] == "dog" && d[0][1] === 3 && d[1] == undefined){return true;}else{return false;}})(myArray), "<code>myArray</code> should now equal <code>[["dog", 3]]</code>.");'
- text: '<code>removedFromMyArray</code> должен содержать <code>[&quot;John&quot;, 23]</code> .'
testString: 'assert((function(d){if(d[0] == "John" && d[1] === 23 && typeof removedFromMyArray === "object"){return true;}else{return false;}})(removedFromMyArray), "<code>removedFromMyArray</code> should contain <code>["John", 23]</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = ["Stimpson", "J", ["cat"]];
var removedFromOurArray = ourArray.shift();
// removedFromOurArray now equals "Stimpson" and ourArray now equals ["J", ["cat"]].
// Setup
var myArray = [["John", 23], ["dog", 3]];
// Only change code below this line.
var removedFromMyArray;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,67 @@
---
id: 56bbb991ad1ed5201cd392ce
title: Manipulate Arrays With unshift()
challengeType: 1
videoUrl: ''
localeTitle: Манипулировать массивами С помощью функции unshift ()
---
## Description
<section id="description"> Вы не только можете <code>shift</code> элементы с начала массива, но также можете <code>unshift</code> элементы в начало массива, то есть добавить элементы перед массивом. <code>.unshift()</code> работает точно так же, как <code>.push()</code> , но вместо добавления элемента в конце массива <code>unshift()</code> добавляет элемент в начале массива. </section>
## Instructions
<section id="instructions"> Добавьте <code>[&quot;Paul&quot;,35]</code> в начало переменной <code>myArray</code> используя <code>unshift()</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>myArray</code> должен теперь иметь [[«Павел», 35], [«собака», 3]].'
testString: 'assert((function(d){if(typeof d[0] === "object" && d[0][0] == "Paul" && d[0][1] === 35 && d[1][0] != undefined && d[1][0] == "dog" && d[1][1] != undefined && d[1][1] == 3){return true;}else{return false;}})(myArray), "<code>myArray</code> should now have [["Paul", 35], ["dog", 3]].");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = ["Stimpson", "J", "cat"];
ourArray.shift(); // ourArray now equals ["J", "cat"]
ourArray.unshift("Happy");
// ourArray now equals ["Happy", "J", "cat"]
// Setup
var myArray = [["John", 23], ["dog", 3]];
myArray.shift();
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,86 @@
---
id: 56533eb9ac21ba0edf2244cb
title: Manipulating Complex Objects
challengeType: 1
videoUrl: ''
localeTitle: Манипулирование сложными объектами
---
## Description
<section id="description"> Иногда вы можете хранить данные в гибкой <dfn>структуре данных</dfn> . Объект JavaScript - это один из способов обработки гибких данных. Они допускают произвольные комбинации <dfn>строк</dfn> , <dfn>чисел</dfn> , <dfn>булевых элементов</dfn> , <dfn>массивов</dfn> , <dfn>функций</dfn> и <dfn>объектов</dfn> . Вот пример сложной структуры данных: <blockquote> var ourMusic = [ <br> { <br> «художник»: «Daft Punk», <br> «title»: «Домашнее задание», <br> &quot;release_year&quot;: 1997, <br> «Форматы»: [ <br> &quot;CD&quot;, <br> &quot;Кассета&quot;, <br> &quot;LP&quot; <br> ], <br> &quot;gold&quot;: true <br> } <br> ]; </blockquote> Это массив, содержащий один объект внутри. Объект имеет различные фрагменты <dfn>метаданных</dfn> об альбоме. Он также имеет вложенный массив <code>&quot;formats&quot;</code> . Если вы хотите добавить больше записей альбомов, вы можете сделать это, добавив записи в массив верхнего уровня. Объекты хранят данные в свойстве, которое имеет формат ключа. В приведенном выше примере <code>&quot;artist&quot;: &quot;Daft Punk&quot;</code> - это свойство, которое имеет ключ от <code>&quot;artist&quot;</code> и значение <code>&quot;Daft Punk&quot;</code> . <a href="http://www.json.org/" target="_blank">Обозначение объекта JavaScript</a> или <code>JSON</code> - это связанный с ними формат обмена данными, используемый для хранения данных. <blockquote> { <br> «художник»: «Daft Punk», <br> «title»: «Домашнее задание», <br> &quot;release_year&quot;: 1997, <br> «Форматы»: [ <br> &quot;CD&quot;, <br> &quot;Кассета&quot;, <br> &quot;LP&quot; <br> ], <br> &quot;gold&quot;: true <br> } </blockquote> <strong>Заметка</strong> <br> Вам нужно будет поместить запятую после каждого объекта в массиве, если это не последний объект в массиве. </section>
## Instructions
<section id="instructions"> Добавьте новый альбом в массив <code>myMusic</code> . Добавьте строки <code>artist</code> и <code>title</code> , номер <code>release_year</code> и массив <code>formats</code> строк. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myMusic</code> должен быть массивом
testString: 'assert(Array.isArray(myMusic), "<code>myMusic</code> should be an array");'
- text: <code>myMusic</code> должен иметь как минимум два элемента
testString: 'assert(myMusic.length > 1, "<code>myMusic</code> should have at least two elements");'
- text: '<code>myMusic[1]</code> должен быть объектом'
testString: 'assert(typeof myMusic[1] === "object", "<code>myMusic[1]</code> should be an object");'
- text: '<code>myMusic[1]</code> должен иметь не менее 4 свойств'
testString: 'assert(Object.keys(myMusic[1]).length > 3, "<code>myMusic[1]</code> should have at least 4 properties");'
- text: '<code>myMusic[1]</code> должен содержать свойство <code>artist</code> которое является строкой'
testString: 'assert(myMusic[1].hasOwnProperty("artist") && typeof myMusic[1].artist === "string", "<code>myMusic[1]</code> should contain an <code>artist</code> property which is a string");'
- text: '<code>myMusic[1]</code> должен содержать свойство <code>title</code> которое является строкой'
testString: 'assert(myMusic[1].hasOwnProperty("title") && typeof myMusic[1].title === "string", "<code>myMusic[1]</code> should contain a <code>title</code> property which is a string");'
- text: '<code>myMusic[1]</code> должен содержать свойство <code>release_year</code> которое является числом'
testString: 'assert(myMusic[1].hasOwnProperty("release_year") && typeof myMusic[1].release_year === "number", "<code>myMusic[1]</code> should contain a <code>release_year</code> property which is a number");'
- text: '<code>myMusic[1]</code> должен содержать <code>formats</code> свойство , которое является массивом'
testString: 'assert(myMusic[1].hasOwnProperty("formats") && Array.isArray(myMusic[1].formats), "<code>myMusic[1]</code> should contain a <code>formats</code> property which is an array");'
- text: <code>formats</code> должны быть массивом строк с не менее чем двумя элементами
testString: 'assert(myMusic[1].formats.every(function(item) { return (typeof item === "string")}) && myMusic[1].formats.length > 1, "<code>formats</code> should be an array of strings with at least two elements");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var myMusic = [
{
"artist": "Billy Joel",
"title": "Piano Man",
"release_year": 1973,
"formats": [
"CD",
"8T",
"LP"
],
"gold": true
}
// Add record here
];
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,66 @@
---
id: cf1111c1c11feddfaeb8bdef
title: Modify Array Data With Indexes
challengeType: 1
videoUrl: ''
localeTitle: Изменение данных массива с индексами
---
## Description
<section id="description"> В отличие от строк, записи массивов <dfn>изменяемы</dfn> и могут быть изменены свободно. <strong>пример</strong> <blockquote> var ourArray = [50,40,30]; <br> ourArray [0] = 15; // равно [15, 40, 30] </blockquote> <strong>Заметка</strong> <br> Между именем массива и квадратными скобками не должно быть пробелов, например <code>array [0]</code> . Хотя JavaScript способен корректно обрабатывать, это может смутить других программистов, читающих ваш код. </section>
## Instructions
<section id="instructions"> Измените данные, хранящиеся в индексе <code>0</code> <code>myArray</code> до значения <code>45</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>myArray</code> теперь должен быть [45,64,99].'
testString: 'assert((function(){if(typeof myArray != "undefined" && myArray[0] == 45 && myArray[1] == 64 && myArray[2] == 99){return true;}else{return false;}})(), "<code>myArray</code> should now be [45,64,99].");'
- text: Вы должны использовать правильный индекс для изменения значения в <code>myArray</code> .
testString: 'assert((function(){if(code.match(/myArray\[0\]\s*=\s*/g)){return true;}else{return false;}})(), "You should be using correct index to modify the value in <code>myArray</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = [18,64,99];
ourArray[1] = 45; // ourArray now equals [18,45,99].
// Setup
var myArray = [18,64,99];
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,80 @@
---
id: 56533eb9ac21ba0edf2244df
title: Multiple Identical Options in Switch Statements
challengeType: 1
videoUrl: ''
localeTitle: Несколько идентичных параметров в операторах переключателей
---
## Description
<section id="description"> Если оператор <code>break</code> не <code>switch</code> в <code>case</code> оператора <code>switch</code> , следующий оператор (ы) <code>case</code> выполняются до тех пор, пока не будет обнаружен <code>break</code> . Если у вас несколько входов с одним и тем же выходом, вы можете представить их в инструкции <code>switch</code> следующим образом: <blockquote> switch (val) { <br> Дело 1: <br> случай 2: <br> случай 3: <br> result = &quot;1, 2 или 3&quot;; <br> ломать; <br> случай 4: <br> результат = &quot;4 один&quot;; <br> } </blockquote> Случаи для 1, 2 и 3 будут давать одинаковый результат. </section>
## Instructions
<section id="instructions"> Напишите оператор switch, чтобы задать <code>answer</code> для следующих диапазонов: <br> <code>1-3</code> - «Низкий» <br> <code>4-6</code> - «Середина» <br> <code>7-9</code> - «Высокое» <strong>примечание</strong> <br> Вам нужно будет иметь оператор <code>case</code> для каждого числа в диапазоне. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>sequentialSizes(1)</code> должен возвращать &quot;Low&quot;
testString: 'assert(sequentialSizes(1) === "Low", "<code>sequentialSizes(1)</code> should return "Low"");'
- text: <code>sequentialSizes(2)</code> должен возвращать &quot;Low&quot;
testString: 'assert(sequentialSizes(2) === "Low", "<code>sequentialSizes(2)</code> should return "Low"");'
- text: <code>sequentialSizes(3)</code> должен возвращать &quot;Low&quot;
testString: 'assert(sequentialSizes(3) === "Low", "<code>sequentialSizes(3)</code> should return "Low"");'
- text: <code>sequentialSizes(4)</code> должен возвращать «Mid»
testString: 'assert(sequentialSizes(4) === "Mid", "<code>sequentialSizes(4)</code> should return "Mid"");'
- text: <code>sequentialSizes(5)</code> должен возвращать &quot;Mid&quot;
testString: 'assert(sequentialSizes(5) === "Mid", "<code>sequentialSizes(5)</code> should return "Mid"");'
- text: <code>sequentialSizes(6)</code> должен возвращать «Mid»
testString: 'assert(sequentialSizes(6) === "Mid", "<code>sequentialSizes(6)</code> should return "Mid"");'
- text: <code>sequentialSizes(7)</code> должен возвращать &quot;Высокий&quot;
testString: 'assert(sequentialSizes(7) === "High", "<code>sequentialSizes(7)</code> should return "High"");'
- text: <code>sequentialSizes(8)</code> должен возвращать &quot;Высокий&quot;
testString: 'assert(sequentialSizes(8) === "High", "<code>sequentialSizes(8)</code> should return "High"");'
- text: <code>sequentialSizes(9)</code> должен возвращать &quot;Высокий&quot;
testString: 'assert(sequentialSizes(9) === "High", "<code>sequentialSizes(9)</code> should return "High"");'
- text: Вы не должны использовать никаких утверждений <code>if</code> или <code>else</code>
testString: 'assert(!/else/g.test(code) || !/if/g.test(code), "You should not use any <code>if</code> or <code>else</code> statements");'
- text: Вы должны иметь девять <code>case</code> заявлений
testString: 'assert(code.match(/case/g).length === 9, "You should have nine <code>case</code> statements");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function sequentialSizes(val) {
var answer = "";
// Only change code below this line
// Only change code above this line
return answer;
}
// Change this value to test
sequentialSizes(1);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,59 @@
---
id: bd7993c9c69feddfaeb7bdef
title: Multiply Two Decimals with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Умножить два десятичных знака с помощью JavaScript
---
## Description
<section id="description"> В JavaScript вы также можете выполнять вычисления с десятичными числами, как и целые числа. Давайте умножим два десятичных знака вместе, чтобы получить их продукт. </section>
## Instructions
<section id="instructions"> Измените <code>0.0</code> чтобы продукт равнялся <code>5.0</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Переменный <code>product</code> должен быть равен <code>5.0</code> .
testString: 'assert(product === 5.0, "The variable <code>product</code> should equal <code>5.0</code>.");'
- text: Вы должны использовать оператор <code>*</code>
testString: 'assert(/\*/.test(code), "You should use the <code>*</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var product = 2.0 * 0.0;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,59 @@
---
id: cf1231c1c11feddfaeb5bdef
title: Multiply Two Numbers with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Умножить два числа с помощью JavaScript
---
## Description
<section id="description"> Мы также можем умножить одно число на другое. JavaScript использует символ <code>*</code> для умножения двух чисел. <p> <strong>пример</strong> </p><blockquote> myVar = 13 * 13; // присвоено 169 </blockquote></section>
## Instructions
<section id="instructions"> Измените <code>0</code> чтобы продукт равнялся <code>80</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Сделать переменный <code>product</code> равным 80
testString: 'assert(product === 80,"Make the variable <code>product</code> equal 80");'
- text: Используйте оператор <code>*</code>
testString: 'assert(/\*/.test(code), "Use the <code>*</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var product = 8 * 0;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,61 @@
---
id: cf1111c1c11feddfaeb7bdef
title: Nest one Array within Another Array
challengeType: 1
videoUrl: ''
localeTitle: Гнездо одного массива в другом массиве
---
## Description
<section id="description"> Вы также можете вложить массивы в другие массивы, например: <code>[[&quot;Bulls&quot;, 23], [&quot;White Sox&quot;, 45]]</code> . Это также называется <dfn>многомерным массивом <dfn>.</dfn></dfn> </section>
## Instructions
<section id="instructions"> Создайте вложенный массив с именем <code>myArray</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>myArray</code> должен иметь по крайней мере один массив, вложенный в другой массив.'
testString: 'assert(Array.isArray(myArray) && myArray.some(Array.isArray), "<code>myArray</code> should have at least one array nested within another array.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = [["the universe", 42], ["everything", 101010]];
// Only change code below this line.
var myArray = [];
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,62 @@
---
id: 56533eb9ac21ba0edf2244e1
title: Nesting For Loops
challengeType: 1
videoUrl: ''
localeTitle: Вложение в петли
---
## Description
<section id="description"> Если у вас многомерный массив, вы можете использовать ту же логику, что и предыдущая путевая точка, чтобы прокручивать как массив, так и любые подмассивы. Вот пример: <blockquote> var arr = [ <br> [1,2], [3,4], [5,6] <br> ]; <br> для (var i = 0; i &lt;arr.length; i ++) { <br> для (var j = 0; j &lt;arr [i] .length; j ++) { <br> console.log (обр [я] [J]); <br> } <br> } </blockquote> Это выводит каждый подэлемент в <code>arr</code> одному за раз. Обратите внимание, что для внутреннего цикла мы проверяем <code>.length</code> of <code>arr[i]</code> , так как <code>arr[i]</code> сам является массивом. </section>
## Instructions
<section id="instructions"> Модифицировать функцию <code>multiplyAll</code> так, чтобы она умножала переменную <code>product</code> на каждое число в подмассивах <code>arr</code> </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>multiplyAll([[1],[2],[3]])</code> должен возвращать <code>6</code>'
testString: 'assert(multiplyAll([[1],[2],[3]]) === 6, "<code>multiplyAll([[1],[2],[3]])</code> should return <code>6</code>");'
- text: '<code>multiplyAll([[1,2],[3,4],[5,6,7]])</code> должен вернуть <code>5040</code>'
testString: 'assert(multiplyAll([[1,2],[3,4],[5,6,7]]) === 5040, "<code>multiplyAll([[1,2],[3,4],[5,6,7]])</code> should return <code>5040</code>");'
- text: '<code>multiplyAll([[5,1],[0.2, 4, 0.5],[3, 9]])</code> должен вернуть <code>54</code>'
testString: 'assert(multiplyAll([[5,1],[0.2, 4, 0.5],[3, 9]]) === 54, "<code>multiplyAll([[5,1],[0.2, 4, 0.5],[3, 9]])</code> should return <code>54</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function multiplyAll(arr) {
var product = 1;
// Only change code below this line
// Only change code above this line
return product;
}
// Modify values below to test your code
multiplyAll([[1,2],[3,4],[5,6,7]]);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,97 @@
---
id: 56533eb9ac21ba0edf2244bd
title: Passing Values to Functions with Arguments
challengeType: 1
videoUrl: ''
localeTitle: Передача значений в функции с аргументами
---
## Description
<section id="description"> <dfn>Параметры</dfn> - это переменные, которые действуют как заполнители для значений, которые должны быть введены в функцию при ее вызове. Когда функция определена, она обычно определяется вместе с одним или несколькими параметрами. Фактические значения, которые вводятся (или <dfn>«переданы»</dfn> ) в функцию при ее вызове, называются <dfn>аргументами</dfn> . Вот функция с двумя параметрами <code>param1</code> и <code>param2</code> : <blockquote> function testFun (param1, param2) { <br> console.log (param1, param2); <br> } </blockquote> Затем мы можем вызвать <code>testFun</code> : <code>testFun(&quot;Hello&quot;, &quot;World&quot;);</code> Мы передали два аргумента: <code>&quot;Hello&quot;</code> и <code>&quot;World&quot;</code> . Внутри функции <code>param1</code> будет равен «Hello», а <code>param2</code> будет равен «World». Обратите внимание, что вы можете снова вызвать <code>testFun</code> с разными аргументами, и параметры будут принимать значение новых аргументов. </section>
## Instructions
<section id="instructions"><ol><li> Создайте функцию <code>functionWithArgs</code> которая принимает два аргумента и выводит их сумму в консоль dev. </li><li> Вызовите функцию с двумя числами в качестве аргументов. </li></ol></section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>functionWithArgs</code> должна быть функцией
testString: 'assert(typeof functionWithArgs === "function", "<code>functionWithArgs</code> should be a function");'
- text: '<code>functionWithArgs(1,2)</code> должен выводить <code>3</code>'
testString: 'if(typeof functionWithArgs === "function") { capture(); functionWithArgs(1,2); uncapture(); } assert(logOutput == 3, "<code>functionWithArgs(1,2)</code> should output <code>3</code>");'
- text: '<code>functionWithArgs(7,9)</code> должен выводить <code>16</code>'
testString: 'if(typeof functionWithArgs === "function") { capture(); functionWithArgs(7,9); uncapture(); } assert(logOutput == 16, "<code>functionWithArgs(7,9)</code> should output <code>16</code>");'
- text: Вызовите <code>functionWithArgs</code> с двумя номерами после ее определения.
testString: 'assert(/^\s*functionWithArgs\s*\(\s*\d+\s*,\s*\d+\s*\)\s*;/m.test(code), "Call <code>functionWithArgs</code> with two numbers after you define it.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
function ourFunctionWithArgs(a, b) {
console.log(a - b);
}
ourFunctionWithArgs(10, 5); // Outputs 5
// Only change code below this line.
```
</div>
### Before Test
<div id='js-setup'>
```js
var logOutput = "";
var originalConsole = console
function capture() {
var nativeLog = console.log;
console.log = function (message) {
if(message) logOutput = JSON.stringify(message).trim();
if(nativeLog.apply) {
nativeLog.apply(originalConsole, arguments);
} else {
var nativeMsg = Array.prototype.slice.apply(arguments).join(' ');
nativeLog(nativeMsg);
}
};
}
function uncapture() {
console.log = originalConsole.log;
}
capture();
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,62 @@
---
id: 599a789b454f2bbd91a3ff4d
title: Practice comparing different values
challengeType: 1
videoUrl: ''
localeTitle: Практика сравнения разных значений
---
## Description
<section id="description"> В двух последних проблемах мы узнали об операторе равенства ( <code>==</code> ) и строгого оператора равенства ( <code>===</code> ). Давайте сделаем быстрый обзор и практикуем использование этих операторов еще немного. Если сравниваемые значения не относятся к одному типу, оператор равенства выполняет преобразование типа, а затем оценивает значения. Тем не менее, строгий оператор равенства будет сравнивать как тип данных, так и значение as-is, без преобразования одного типа в другой. <strong>Примеры</strong> <blockquote> 3 == &#39;3&#39; // возвращает true, потому что JavaScript выполняет преобразование типов из строки в число <br> 3 === &#39;3&#39; // возвращает false, потому что типы разные, и преобразование типов не выполняется </blockquote> <strong>Заметка</strong> <br> В JavaScript вы можете определить тип переменной или значение с помощью оператора <code>typeof</code> следующим образом: <blockquote> typeof 3 // возвращает &#39;number&#39; <br> typeof &#39;3&#39; // возвращает &#39;string&#39; </blockquote></section>
## Instructions
<section id="instructions"> Функция <code>compareEquality</code> в редакторе сравнивает два значения с помощью <code>equality operator</code> . Измените функцию так, чтобы она возвращала «Равно» только тогда, когда значения строго равны. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>compareEquality(10, &quot;10&quot;)</code> должен возвращать &quot;Не равно&quot;'
testString: 'assert(compareEquality(10, "10") === "Not Equal", "<code>compareEquality(10, "10")</code> should return "Not Equal"");'
- text: '<code>compareEquality(&quot;20&quot;, 20)</code> должен возвращать &quot;Не равно&quot;'
testString: 'assert(compareEquality("20", 20) === "Not Equal", "<code>compareEquality("20", 20)</code> should return "Not Equal"");'
- text: Вы должны использовать оператор <code>===</code>
testString: 'assert(code.match(/===/g), "You should use the <code>===</code> operator");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
function compareEquality(a, b) {
if (a == b) { // Change this line
return "Equal";
}
return "Not Equal";
}
// Change this value to test
compareEquality(10, "10");
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,96 @@
---
id: 5688e62ea601b2482ff8422b
title: Profile Lookup
challengeType: 1
videoUrl: ''
localeTitle: Поиск профиля
---
## Description
<section id="description"> У нас есть набор объектов, представляющих разные люди в наших списках контактов. Функция <code>lookUpProfile</code> которая принимает <code>name</code> и свойство ( <code>prop</code> ) в качестве аргументов, была предварительно написана для вас. Функция должна проверять, является ли <code>name</code> фактическим контактом <code>firstName</code> и данное свойство ( <code>prop</code> ) является свойством этого контакта. Если оба они истинны, верните «значение» этого свойства. Если <code>name</code> не соответствует контактам, тогда верните <code>&quot;No such contact&quot;</code> Если <code>prop</code> не соответствует каким-либо действительным свойствам контакта, найденного для соответствия <code>name</code> тогда верните <code>&quot;No such property&quot;</code> </section>
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>&quot;Kristian&quot;, &quot;lastName&quot;</code> должен вернуть <code>&quot;Vos&quot;</code>'
testString: 'assert(lookUpProfile("Kristian","lastName") === "Vos", "<code>"Kristian", "lastName"</code> should return <code>"Vos"</code>");'
- text: '<code>&quot;Sherlock&quot;, &quot;likes&quot;</code> должен вернуться <code>[&quot;Intriguing Cases&quot;, &quot;Violin&quot;]</code>'
testString: 'assert.deepEqual(lookUpProfile("Sherlock", "likes"), ["Intriguing Cases", "Violin"], "<code>"Sherlock", "likes"</code> should return <code>["Intriguing Cases", "Violin"]</code>");'
- text: '<code>&quot;Harry&quot;,&quot;likes&quot;</code> должен вернуть массив'
testString: 'assert(typeof lookUpProfile("Harry", "likes") === "object", "<code>"Harry","likes"</code> should return an array");'
- text: '<code>&quot;Bob&quot;, &quot;number&quot;</code> должен вернуть «Нет такого контакта»,'
testString: 'assert(lookUpProfile("Bob", "number") === "No such contact", "<code>"Bob", "number"</code> should return "No such contact"");'
- text: '<code>&quot;Bob&quot;, &quot;potato&quot;</code> должен вернуться «Нет такого контакта»,'
testString: 'assert(lookUpProfile("Bob", "potato") === "No such contact", "<code>"Bob", "potato"</code> should return "No such contact"");'
- text: '<code>&quot;Akira&quot;, &quot;address&quot;</code> должен вернуть «Нет такого имущества»,'
testString: 'assert(lookUpProfile("Akira", "address") === "No such property", "<code>"Akira", "address"</code> should return "No such property"");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
//Setup
var contacts = [
{
"firstName": "Akira",
"lastName": "Laine",
"number": "0543236543",
"likes": ["Pizza", "Coding", "Brownie Points"]
},
{
"firstName": "Harry",
"lastName": "Potter",
"number": "0994372684",
"likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
"firstName": "Sherlock",
"lastName": "Holmes",
"number": "0487345643",
"likes": ["Intriguing Cases", "Violin"]
},
{
"firstName": "Kristian",
"lastName": "Vos",
"number": "unknown",
"likes": ["JavaScript", "Gaming", "Foxes"]
}
];
function lookUpProfile(name, prop){
// Only change code below this line
// Only change code above this line
}
// Change these values to test your function
lookUpProfile("Akira", "likes");
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,59 @@
---
id: 56533eb9ac21ba0edf2244b4
title: Quoting Strings with Single Quotes
challengeType: 1
videoUrl: ''
localeTitle: Цитирование строк с одиночными котировками
---
## Description
<section id="description"> Значения <dfn>строк</dfn> в JavaScript могут быть записаны с одинарными или двойными кавычками, если вы начинаете и заканчиваете одним и тем же типом цитаты. В отличие от некоторых других языков программирования одиночные и двойные кавычки работают одинаково в JavaScript. <blockquote> doubleQuoteStr = &quot;Это строка&quot;; <br> singleQuoteStr = &#39;Это также строка&#39;; </blockquote> Причина, по которой вы, возможно, захотите использовать один тип цитаты над другим, - это если вы хотите использовать оба в строке. Это может произойти, если вы хотите сохранить разговор в строке и провести разговор в кавычках. Другим использованием для него было бы сохранение тега <code>&lt;a&gt;</code> с различными атрибутами в кавычках, все внутри строки. <blockquote> разговор = &#39;Финн восклицает Джейку: «Алгебраический!»; </blockquote> Однако это становится проблемой, если вам нужно использовать внешние цитаты внутри нее. Помните, что строка имеет такую ​​же цитату в начале и в конце. Но если у вас есть такая же цитата где-то посередине, строка остановится раньше и выкинет ошибку. <blockquote> goodStr = &#39;Джейк спрашивает Финна: ​​«Эй, давай отправимся в приключение?»; <br> badStr = &#39;Финн отвечает: «Поехали!»; // Выдает ошибку </blockquote> В <dfn>goodStr</dfn> выше вы можете безопасно использовать обе кавычки, используя обратную косую черту <code>\</code> в качестве escape-символа. <strong>Заметка</strong> <br> Обратную косую черту <code>\</code> не следует путать с косой чертой <code>/</code> . Они не делают то же самое. </section>
## Instructions
<section id="instructions"> Измените предоставленную строку на строку с одинарными кавычками в начале и конце и без escape-символов. Прямо сейчас тег <code>&lt;a&gt;</code> в строке использует двойные кавычки всюду. Вам нужно будет изменить внешние кавычки на одинарные кавычки, чтобы вы могли удалить escape-символы. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Удалите все <code>backslashes</code> ( <code>\</code> )
testString: 'assert(!/\\/g.test(code) && myStr.match("\\s*<a href\\s*=\\s*"http://www.example.com"\\s*target\\s*=\\s*"_blank">\\s*Link\\s*</a>\\s*"), "Remove all the <code>backslashes</code> (<code>\</code>)");'
- text: 'Вы должны иметь две одиночные кавычки <code>&#39;</code> и четыре двойные кавычки <code>&quot;</code>'
testString: 'assert(code.match(/"/g).length === 4 && code.match(/"/g).length === 2, "You should have two single quotes <code>&#39;</code> and four double quotes <code>&quot;</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var myStr = "<a href=\"http://www.example.com\" target=\"_blank\">Link</a>";
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,107 @@
---
id: 56533eb9ac21ba0edf2244cf
title: Record Collection
challengeType: 1
videoUrl: ''
localeTitle: Коллекция записей
---
## Description
<section id="description"> Вам предоставляется объект JSON, представляющий часть вашей коллекции музыкальных альбомов. Каждый альбом имеет несколько свойств и уникальный идентификационный номер в качестве ключа. Не все альбомы имеют полную информацию. Напишите функцию, которая принимает <code>id</code> альбома (например, <code>2548</code> ), свойство <code>prop</code> (например, <code>&quot;artist&quot;</code> или <code>&quot;tracks&quot;</code> ) и <code>value</code> (например, <code>&quot;Addicted to Love&quot;</code> ) для изменения данных в этой коллекции. Если <code>prop</code> не является <code>&quot;tracks&quot;</code> а <code>value</code> не пусто ( <code>&quot;&quot;</code> ), обновите или установите <code>value</code> для свойства этого альбома записи. Ваша функция всегда должна возвращать весь объект коллекции. Существует несколько правил обработки неполных данных: если <code>prop</code> является <code>&quot;tracks&quot;</code> но альбом не имеет свойства <code>&quot;tracks&quot;</code> , создайте пустой массив перед добавлением нового значения в соответствующее свойство альбома. Если <code>prop</code> - это <code>&quot;tracks&quot;</code> а <code>value</code> не пусто ( <code>&quot;&quot;</code> ), нажмите <code>value</code> в конец существующего массива <code>tracks</code> . Если <code>value</code> пусто ( <code>&quot;&quot;</code> ), удалите данное свойство <code>prop</code> из альбома. <strong>Советы</strong> <br> Используйте <code>bracket notation</code> при <a href="javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-variables" target="_blank">доступе к свойствам объекта с переменными</a> . Push - метод массива, который вы можете прочитать в <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push" target="_blank">Mozilla Developer Network</a> . Вы можете обратиться к <a href="javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects" target="_blank">Манипулированию сложными объектами,</a> представляющими Обозначение <a href="javascript-algorithms-and-data-structures/basic-javascript/manipulating-complex-objects" target="_blank">объектов</a> JavaScript (JSON) для обновления. </section>
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: 'После <code>updateRecords(5439, &quot;artist&quot;, &quot;ABBA&quot;)</code> <code>artist</code> должен быть <code>&quot;ABBA&quot;</code>'
testString: 'collection = collectionCopy; assert(updateRecords(5439, "artist", "ABBA")[5439]["artist"] === "ABBA", "After <code>updateRecords(5439, "artist", "ABBA")</code>, <code>artist</code> should be <code>"ABBA"</code>");'
- text: 'После <code>updateRecords(5439, &quot;tracks&quot;, &quot;Take a Chance on Me&quot;)</code> <code>tracks</code> должны иметь <code>&quot;Take a Chance on Me&quot;</code> в качестве последнего элемента.'
testString: 'assert(updateRecords(5439, "tracks", "Take a Chance on Me")[5439]["tracks"].pop() === "Take a Chance on Me", "After <code>updateRecords(5439, "tracks", "Take a Chance on Me")</code>, <code>tracks</code> should have <code>"Take a Chance on Me"</code> as the last element.");'
- text: 'После <code>updateRecords(2548, &quot;artist&quot;, &quot;&quot;)</code> <code>artist</code> не должен быть установлен'
testString: 'updateRecords(2548, "artist", ""); assert(!collection[2548].hasOwnProperty("artist"), "After <code>updateRecords(2548, "artist", "")</code>, <code>artist</code> should not be set");'
- text: 'После <code>updateRecords(1245, &quot;tracks&quot;, &quot;Addicted to Love&quot;)</code> <code>tracks</code> должны иметь <code>&quot;Addicted to Love&quot;</code> в качестве последнего элемента.'
testString: 'assert(updateRecords(1245, "tracks", "Addicted to Love")[1245]["tracks"].pop() === "Addicted to Love", "After <code>updateRecords(1245, "tracks", "Addicted to Love")</code>, <code>tracks</code> should have <code>"Addicted to Love"</code> as the last element.");'
- text: 'После <code>updateRecords(2468, &quot;tracks&quot;, &quot;Free&quot;)</code> <code>tracks</code> должны иметь <code>&quot;1999&quot;</code> в качестве первого элемента.'
testString: 'assert(updateRecords(2468, "tracks", "Free")[2468]["tracks"][0] === "1999", "After <code>updateRecords(2468, "tracks", "Free")</code>, <code>tracks</code> should have <code>"1999"</code> as the first element.");'
- text: 'После <code>updateRecords(2548, &quot;tracks&quot;, &quot;&quot;)</code> <code>tracks</code> не должны устанавливаться'
testString: 'updateRecords(2548, "tracks", ""); assert(!collection[2548].hasOwnProperty("tracks"), "After <code>updateRecords(2548, "tracks", "")</code>, <code>tracks</code> should not be set");'
- text: 'После <code>updateRecords(1245, &quot;album&quot;, &quot;Riptide&quot;)</code> <code>album</code> должен быть <code>&quot;Riptide&quot;</code>'
testString: 'assert(updateRecords(1245, "album", "Riptide")[1245]["album"] === "Riptide", "After <code>updateRecords(1245, "album", "Riptide")</code>, <code>album</code> should be <code>"Riptide"</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var collection = {
"2548": {
"album": "Slippery When Wet",
"artist": "Bon Jovi",
"tracks": [
"Let It Rock",
"You Give Love a Bad Name"
]
},
"2468": {
"album": "1999",
"artist": "Prince",
"tracks": [
"1999",
"Little Red Corvette"
]
},
"1245": {
"artist": "Robert Palmer",
"tracks": [ ]
},
"5439": {
"album": "ABBA Gold"
}
};
// Keep a copy of the collection for tests
var collectionCopy = JSON.parse(JSON.stringify(collection));
// Only change code below this line
function updateRecords(id, prop, value) {
return collection;
}
// Alter values below to test your code
updateRecords(5439, "artist", "ABBA");
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,88 @@
---
id: 56533eb9ac21ba0edf2244e0
title: Replacing If Else Chains with Switch
challengeType: 1
videoUrl: ''
localeTitle: Замена остальных цепей коммутатором
---
## Description
<section id="description"> Если у вас есть много вариантов на выбор, оператор <code>switch</code> может быть проще писать, чем многие прикованные <code>if</code> / <code>else if</code> . Следующие: <blockquote> если (val === 1) { <br> answer = &quot;a&quot;; <br> } else if (val === 2) { <br> answer = &quot;b&quot;; <br> } else { <br> answer = &quot;c&quot;; <br> } </blockquote> можно заменить на: <blockquote> switch (val) { <br> Дело 1: <br> answer = &quot;a&quot;; <br> ломать; <br> случай 2: <br> answer = &quot;b&quot;; <br> ломать; <br> по умолчанию: <br> answer = &quot;c&quot;; <br> } </blockquote></section>
## Instructions
<section id="instructions"> Измените прикованные инструкции <code>if</code> / <code>else if</code> оператор <code>switch</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Вы не должны использовать никаких <code>else</code> утверждений в любом месте редактора
testString: 'assert(!/else/g.test(code), "You should not use any <code>else</code> statements anywhere in the editor");'
- text: Вы не должны использовать какие-либо инструкции <code>if</code> в редакторе
testString: 'assert(!/if/g.test(code), "You should not use any <code>if</code> statements anywhere in the editor");'
- text: Вы должны иметь по крайней мере четыре <code>break</code> заявления
testString: 'assert(code.match(/break/g).length >= 4, "You should have at least four <code>break</code> statements");'
- text: <code>chainToSwitch(&quot;bob&quot;)</code> должен быть &quot;Marley&quot;
testString: 'assert(chainToSwitch("bob") === "Marley", "<code>chainToSwitch("bob")</code> should be "Marley"");'
- text: <code>chainToSwitch(42)</code> должен быть «Ответ»
testString: 'assert(chainToSwitch(42) === "The Answer", "<code>chainToSwitch(42)</code> should be "The Answer"");'
- text: <code>chainToSwitch(1)</code> должен быть «Нет №1»
testString: 'assert(chainToSwitch(1) === "There is no #1", "<code>chainToSwitch(1)</code> should be "There is no #1"");'
- text: <code>chainToSwitch(99)</code> должен быть «пропустил меня этим!»
testString: 'assert(chainToSwitch(99) === "Missed me by this much!", "<code>chainToSwitch(99)</code> should be "Missed me by this much!"");'
- text: <code>chainToSwitch(7)</code> должен быть «Ate Nine»
testString: 'assert(chainToSwitch(7) === "Ate Nine", "<code>chainToSwitch(7)</code> should be "Ate Nine"");'
- text: <code>chainToSwitch(&quot;John&quot;)</code> должен быть «» (пустая строка)
testString: 'assert(chainToSwitch("John") === "", "<code>chainToSwitch("John")</code> should be "" (empty string)");'
- text: <code>chainToSwitch(156)</code> должен быть «&quot; (пустая строка)
testString: 'assert(chainToSwitch(156) === "", "<code>chainToSwitch(156)</code> should be "" (empty string)");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function chainToSwitch(val) {
var answer = "";
// Only change code below this line
if (val === "bob") {
answer = "Marley";
} else if (val === 42) {
answer = "The Answer";
} else if (val === 1) {
answer = "There is no #1";
} else if (val === 99) {
answer = "Missed me by this much!";
} else if (val === 7) {
answer = "Ate Nine";
}
// Only change code above this line
return answer;
}
// Change this value to test
chainToSwitch(7);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,64 @@
---
id: 56533eb9ac21ba0edf2244c2
title: Return a Value from a Function with Return
challengeType: 1
videoUrl: ''
localeTitle: Возврат значения из функции с возвратом
---
## Description
<section id="description"> Мы можем передавать значения в функцию с <dfn>аргументами</dfn> . Вы можете использовать оператор <code>return</code> чтобы отправить значение обратно из функции. <strong>пример</strong> <blockquote> function plusThree (num) { <br> return num + 3; <br> } <br> var answer = plusThree (5); // 8 </blockquote> <code>plusThree</code> принимает <dfn>аргумент</dfn> для <code>num</code> и возвращает значение, равное <code>num + 3</code> . </section>
## Instructions
<section id="instructions"> Создайте функцию <code>timesFive</code> которая принимает один аргумент, умножает его на <code>5</code> и возвращает новое значение. См. Последнюю строку в редакторе для примера того, как вы можете проверить свою функцию <code>timesFive</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>timesFive</code> должна быть функцией
testString: 'assert(typeof timesFive === "function", "<code>timesFive</code> should be a function");'
- text: <code>timesFive(5)</code> должен вернуть <code>25</code>
testString: 'assert(timesFive(5) === 25, "<code>timesFive(5)</code> should return <code>25</code>");'
- text: <code>timesFive(2)</code> должен вернуть <code>10</code>
testString: 'assert(timesFive(2) === 10, "<code>timesFive(2)</code> should return <code>10</code>");'
- text: <code>timesFive(0)</code> должен возвращать <code>0</code>
testString: 'assert(timesFive(0) === 0, "<code>timesFive(0)</code> should return <code>0</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
function minusSeven(num) {
return num - 7;
}
// Only change code below this line
console.log(minusSeven(10));
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,71 @@
---
id: 56533eb9ac21ba0edf2244c4
title: Return Early Pattern for Functions
challengeType: 1
videoUrl: ''
localeTitle: Возврат раннего шаблона для функций
---
## Description
<section id="description"> Когда оператор <code>return</code> достигнут, выполнение текущей функции прекращается, и управление возвращается в вызывающее местоположение. <strong>пример</strong> <blockquote> function myFun () { <br> console.log ( &quot;Hello&quot;); <br> возвращение «Мир»; <br> console.log ( &quot;Byebye&quot;) <br> } <br> myFun (); </blockquote> Вышеупомянутые выходы «Hello» на консоль возвращают «Мир», но <code>&quot;byebye&quot;</code> никогда не выводится, потому что функция выходит из оператора <code>return</code> . </section>
## Instructions
<section id="instructions"> Измените функцию <code>abTest</code> так, чтобы, если <code>a</code> или <code>b</code> меньше <code>0</code> функция немедленно выйдет со значением <code>undefined</code> . <strong>намек</strong> <br> Помните, что <a href="http://www.freecodecamp.org/challenges/understanding-uninitialized-variables" target="_blank"><code>undefined</code> - это ключевое слово</a> , а не строка. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>abTest(2,2)</code> должен возвращать число'
testString: 'assert(typeof abTest(2,2) === "number" , "<code>abTest(2,2)</code> should return a number");'
- text: '<code>abTest(2,2)</code> должен вернуть <code>8</code>'
testString: 'assert(abTest(2,2) === 8 , "<code>abTest(2,2)</code> should return <code>8</code>");'
- text: '<code>abTest(-2,2)</code> должен возвращать <code>undefined</code>'
testString: 'assert(abTest(-2,2) === undefined , "<code>abTest(-2,2)</code> should return <code>undefined</code>");'
- text: '<code>abTest(2,-2)</code> должен возвращать <code>undefined</code>'
testString: 'assert(abTest(2,-2) === undefined , "<code>abTest(2,-2)</code> should return <code>undefined</code>");'
- text: '<code>abTest(2,8)</code> должен вернуть <code>18</code>'
testString: 'assert(abTest(2,8) === 18 , "<code>abTest(2,8)</code> should return <code>18</code>");'
- text: '<code>abTest(3,3)</code> должен вернуть <code>12</code>'
testString: 'assert(abTest(3,3) === 12 , "<code>abTest(3,3)</code> should return <code>12</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
function abTest(a, b) {
// Only change code below this line
// Only change code above this line
return Math.round(Math.pow(Math.sqrt(a) + Math.sqrt(b), 2));
}
// Change values below to test your code
abTest(2,2);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,63 @@
---
id: 5679ceb97cbaa8c51670a16b
title: Returning Boolean Values from Functions
challengeType: 1
videoUrl: ''
localeTitle: Возврат булевых значений из функций
---
## Description
<section id="description"> Вы можете вспомнить из <a href="waypoint-comparison-with-the-equality-operator" target="_blank">сравнения с Оператором равенства,</a> что все операторы сравнения возвращают логическое <code>true</code> или <code>false</code> значение. Иногда люди используют оператор if / else для сравнения, например: <blockquote> функция isEqual (a, b) { <br> if (a === b) { <br> return true; <br> } else { <br> return false; <br> } <br> } </blockquote> Но есть лучший способ сделать это. Поскольку <code>===</code> возвращает <code>true</code> или <code>false</code> , мы можем вернуть результат сравнения: <blockquote> функция isEqual (a, b) { <br> return a === b; <br> } </blockquote></section>
## Instructions
<section id="instructions"> Исправить функцию <code>isLess</code> чтобы удалить инструкции <code>if/else</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>isLess(10,15)</code> должен возвращать <code>true</code>'
testString: 'assert(isLess(10,15) === true, "<code>isLess(10,15)</code> should return <code>true</code>");'
- text: '<code>isLess(15,10)</code> должен возвращать <code>false</code>'
testString: 'assert(isLess(15, 10) === false, "<code>isLess(15,10)</code> should return <code>false</code>");'
- text: Вы не должны использовать никаких утверждений <code>if</code> или <code>else</code>
testString: 'assert(!/if|else/g.test(code), "You should not use any <code>if</code> or <code>else</code> statements");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function isLess(a, b) {
// Fix this code
if (a < b) {
return true;
} else {
return false;
}
}
// Change these values to test
isLess(10, 15);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,70 @@
---
id: 56533eb9ac21ba0edf2244dd
title: Selecting from Many Options with Switch Statements
challengeType: 1
videoUrl: ''
localeTitle: Выбор из многих параметров с помощью операторов Switch
---
## Description
<section id="description"> Если у вас есть много вариантов на выбор, используйте оператор <code>switch</code> . Оператор <code>switch</code> проверяет значение и может иметь множество операторов <code>case</code> которые определяют различные возможные значения. Заявления выполняются из первого совпадающего значения <code>case</code> до тех пор, пока не будет обнаружен <code>break</code> . Вот пример <dfn>псевдокода</dfn> : <blockquote> switch (num) { <br> значение case1: <br> statement1; <br> ломать; <br> значение case2: <br> оператор2; <br> ломать; <br> ... <br> значение caseN: <br> statementN; <br> ломать; <br> } </blockquote> значения <code>case</code> проверяются со строгим равенством ( <code>===</code> ). <code>break</code> говорит JavaScript, чтобы остановить выполнение операторов. Если <code>break</code> пропущен, следующий оператор будет выполнен. </section>
## Instructions
<section id="instructions"> Напишите оператор switch, который проверяет <code>val</code> и устанавливает <code>answer</code> для следующих условий: <br> <code>1</code> - &quot;альфа&quot; <br> <code>2</code> - &quot;бета&quot; <br> <code>3</code> - &quot;гамма&quot; <br> <code>4</code> - &quot;дельта&quot; </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>caseInSwitch(1)</code> должен иметь значение &quot;alpha&quot;
testString: 'assert(caseInSwitch(1) === "alpha", "<code>caseInSwitch(1)</code> should have a value of "alpha"");'
- text: '<code>caseInSwitch(2)</code> должен иметь значение «бета»,'
testString: 'assert(caseInSwitch(2) === "beta", "<code>caseInSwitch(2)</code> should have a value of "beta"");'
- text: <code>caseInSwitch(3)</code> должен иметь значение &quot;гамма&quot;
testString: 'assert(caseInSwitch(3) === "gamma", "<code>caseInSwitch(3)</code> should have a value of "gamma"");'
- text: <code>caseInSwitch(4)</code> должен иметь значение &quot;delta&quot;
testString: 'assert(caseInSwitch(4) === "delta", "<code>caseInSwitch(4)</code> should have a value of "delta"");'
- text: Вы не должны использовать никаких утверждений <code>if</code> или <code>else</code>
testString: 'assert(!/else/g.test(code) || !/if/g.test(code), "You should not use any <code>if</code> or <code>else</code> statements");'
- text: У вас должно быть как минимум 3 заявления о <code>break</code>
testString: 'assert(code.match(/break/g).length > 2, "You should have at least 3 <code>break</code> statements");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function caseInSwitch(val) {
var answer = "";
// Only change code below this line
// Only change code above this line
return answer;
}
// Change this value to test
caseInSwitch(1);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,64 @@
---
id: 56533eb9ac21ba0edf2244bc
title: Shopping List
challengeType: 1
videoUrl: ''
localeTitle: Список покупок
---
## Description
<section id="description"> Создайте список покупок в переменной <code>myList</code> . Список должен быть многомерным массивом, содержащим несколько подмассивов. Первый элемент в каждом под-массиве должен содержать строку с именем элемента. Второй элемент должен быть числом, представляющим количество, т. Е. <code>[&quot;Chocolate Bar&quot;, 15]</code> В списке должно быть не менее 5 под-массивов. </section>
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myList</code> должен быть массивом
testString: 'assert(isArray, "<code>myList</code> should be an array");'
- text: Первыми элементами в каждом из ваших подматриц должны быть строки
testString: 'assert(hasString, "The first elements in each of your sub-arrays must all be strings");'
- text: Все элементы в каждом из ваших подматриц должны быть числами
testString: 'assert(hasNumber, "The second elements in each of your sub-arrays must all be numbers");'
- text: В вашем списке должно быть не менее 5 элементов
testString: 'assert(count > 4, "You must have at least 5 items in your list");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var myList = [];
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,106 @@
---
id: 56533eb9ac21ba0edf2244c6
title: Stand in Line
challengeType: 1
videoUrl: ''
localeTitle: Стоять в очереди
---
## Description
<section id="description"> В информатике <dfn>очередь</dfn> представляет собой абстрактную <dfn>структуру данных, в</dfn> которой элементы хранятся в порядке. Новые элементы могут быть добавлены в конце <code>queue</code> а старые элементы сняты с передней части <code>queue</code> . Напишите функцию <code>nextInLine</code> которая принимает массив ( <code>arr</code> ) и число ( <code>item</code> ) в качестве аргументов. Добавьте число в конец массива, затем удалите первый элемент массива. Затем функция <code>nextInLine</code> возвращает элемент, который был удален. </section>
## Instructions
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>nextInLine([], 5)</code> должен возвращать число.'
testString: 'assert.isNumber(nextInLine([],5), "<code>nextInLine([], 5)</code> should return a number.");'
- text: '<code>nextInLine([], 1)</code> должен возвращать <code>1</code>'
testString: 'assert(nextInLine([],1) === 1, "<code>nextInLine([], 1)</code> should return <code>1</code>");'
- text: '<code>nextInLine([2], 1)</code> должен вернуть <code>2</code>'
testString: 'assert(nextInLine([2],1) === 2, "<code>nextInLine([2], 1)</code> should return <code>2</code>");'
- text: '<code>nextInLine([5,6,7,8,9], 1)</code> должен вернуть <code>5</code>'
testString: 'assert(nextInLine([5,6,7,8,9],1) === 5, "<code>nextInLine([5,6,7,8,9], 1)</code> should return <code>5</code>");'
- text: 'После <code>nextInLine(testArr, 10)</code> <code>testArr[4]</code> должно быть <code>10</code>'
testString: 'nextInLine(testArr, 10); assert(testArr[4] === 10, "After <code>nextInLine(testArr, 10)</code>, <code>testArr[4]</code> should be <code>10</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function nextInLine(arr, item) {
// Your code here
return item; // Change this line
}
// Test Setup
var testArr = [1,2,3,4,5];
// Display Code
console.log("Before: " + JSON.stringify(testArr));
console.log(nextInLine(testArr, 6)); // Modify this line to test
console.log("After: " + JSON.stringify(testArr));
```
</div>
### Before Test
<div id='js-setup'>
```js
var logOutput = [];
var originalConsole = console
function capture() {
var nativeLog = console.log;
console.log = function (message) {
logOutput.push(message);
if(nativeLog.apply) {
nativeLog.apply(originalConsole, arguments);
} else {
var nativeMsg = Array.prototype.slice.apply(arguments).join(' ');
nativeLog(nativeMsg);
}
};
}
function uncapture() {
console.log = originalConsole.log;
}
capture();
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,65 @@
---
id: bd7993c9c69feddfaeb8bdef
title: Store Multiple Values in one Variable using JavaScript Arrays
challengeType: 1
videoUrl: ''
localeTitle: Сохранять несколько значений в одной переменной с помощью массивов JavaScript
---
## Description
<section id="description"> С переменными <code>array</code> JavaScript мы можем хранить несколько фрагментов данных в одном месте. Вы начинаете объявление массива с открытой квадратной скобкой, заканчиваете его закрывающей квадратной скобкой и помещаете запятую между каждой записью, например: <code>var sandwich = [&quot;peanut butter&quot;, &quot;jelly&quot;, &quot;bread&quot;]</code> . </section>
## Instructions
<section id="instructions"> Измените новый массив <code>myArray</code> так, чтобы он содержал <code>string</code> и <code>number</code> (в этом порядке). <strong>намек</strong> <br> Если вы застряли, обратитесь к примеру кода в текстовом редакторе. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myArray</code> должен быть <code>array</code> .
testString: 'assert(typeof myArray == "object", "<code>myArray</code> should be an <code>array</code>.");'
- text: Первый элемент в <code>myArray</code> должен быть <code>string</code> .
testString: 'assert(typeof myArray[0] !== "undefined" && typeof myArray[0] == "string", "The first item in <code>myArray</code> should be a <code>string</code>.");'
- text: Второй элемент в <code>myArray</code> должен быть <code>number</code> .
testString: 'assert(typeof myArray[1] !== "undefined" && typeof myArray[1] == "number", "The second item in <code>myArray</code> should be a <code>number</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourArray = ["John", 23];
// Only change code below this line.
var myArray = [];
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,81 @@
---
id: 56533eb9ac21ba0edf2244a8
title: Storing Values with the Assignment Operator
challengeType: 1
videoUrl: ''
localeTitle: Сохранение значений с помощью оператора присваивания
---
## Description
<section id="description"> В JavaScript вы можете сохранить значение в переменной с оператором <dfn>присваивания</dfn> . <code>myVariable = 5;</code> Это присваивает значение <code>Number</code> <code>5</code> <code>myVariable</code> . Назначение всегда идет справа налево. Все, что находится справа от оператора <code>=</code> разрешается до того, как значение присваивается переменной слева от оператора. <blockquote> myVar = 5; <br> myNum = myVar; </blockquote> Это присваивает <code>5</code> <code>myVar</code> а затем снова разрешает <code>myVar</code> на <code>5</code> и присваивает его <code>myNum</code> . </section>
## Instructions
<section id="instructions"> Назначьте значение <code>7</code> переменной <code>a</code> . Назначают содержимое переменной <code>a</code> <code>b</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Не меняйте код над строкой
testString: 'assert(/var a;/.test(code) && /var b = 2;/.test(code), "Do not change code above the line");'
- text: <code>a</code> должно иметь значение 7
testString: 'assert(typeof a === "number" && a === 7, "<code>a</code> should have a value of 7");'
- text: <code>b</code> должно иметь значение 7
testString: 'assert(typeof b === "number" && b === 7, "<code>b</code> should have a value of 7");'
- text: <code>a</code> должен быть назначен <code>b</code> с <code>=</code>
testString: 'assert(/b\s*=\s*a\s*;/g.test(code), "<code>a</code> should be assigned to <code>b</code> with <code>=</code>");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var a;
var b = 2;
// Only change code below this line
```
</div>
### Before Test
<div id='js-setup'>
```js
if (typeof a != 'undefined') {
a = undefined;
}
if (typeof b != 'undefined') {
b = undefined;
}
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,59 @@
---
id: cf1111c1c11feddfaeb4bdef
title: Subtract One Number from Another with JavaScript
challengeType: 1
videoUrl: ''
localeTitle: Вычитайте один номер из другого с помощью JavaScript
---
## Description
<section id="description"> Мы также можем вычесть одно число из другого. JavaScript использует символ <code>-</code> для вычитания. <p> <strong>пример</strong> </p><blockquote> myVar = 12 - 6; // присвоено 6 </blockquote></section>
## Instructions
<section id="instructions"> Измените <code>0</code> так что разница составляет <code>12</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Сделайте переменную <code>difference</code> равной 12.
testString: 'assert(difference === 12, "Make the variable <code>difference</code> equal 12.");'
- text: Вычитайте только одно число из 45.
testString: 'assert(/var\s*difference\s*=\s*45\s*-\s*[0-9]*;(?!\s*[a-zA-Z0-9]+)/.test(code),"Only subtract one number from 45.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
var difference = 45 - 0;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,67 @@
---
id: 567af2437cbaa8c51670a16c
title: Testing Objects for Properties
challengeType: 1
videoUrl: ''
localeTitle: Тестирование объектов для свойств
---
## Description
<section id="description"> Иногда полезно проверить, существует ли свойство данного объекта или нет. Мы можем использовать метод объектов <code>.hasOwnProperty(propname)</code> для определения того, имеет ли этот объект указанное имя свойства. <code>.hasOwnProperty()</code> возвращает <code>true</code> или <code>false</code> если свойство найдено или нет. <strong>пример</strong> <blockquote> var myObj = { <br> top: «шляпа», <br> снизу: &quot;штаны&quot; <br> }; <br> myObj.hasOwnProperty ( &quot;вершина&quot;); // правда <br> myObj.hasOwnProperty ( &quot;средний&quot;); // ложный </blockquote></section>
## Instructions
<section id="instructions"> Измените функцию <code>checkObj</code> для проверки <code>myObj</code> для <code>checkProp</code> . Если свойство найдено, верните его значение. Если нет, верните <code>&quot;Not Found&quot;</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>checkObj(&quot;gift&quot;)</code> должен вернуть <code>&quot;pony&quot;</code> .
testString: 'assert(checkObj("gift") === "pony", "<code>checkObj("gift")</code> should return <code>"pony"</code>.");'
- text: <code>checkObj(&quot;pet&quot;)</code> должен вернуть <code>&quot;kitten&quot;</code> .
testString: 'assert(checkObj("pet") === "kitten", "<code>checkObj("pet")</code> should return <code>"kitten"</code>.");'
- text: <code>checkObj(&quot;house&quot;)</code> должен вернуть <code>&quot;Not Found&quot;</code> .
testString: 'assert(checkObj("house") === "Not Found", "<code>checkObj("house")</code> should return <code>"Not Found"</code>.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var myObj = {
gift: "pony",
pet: "kitten",
bed: "sleigh"
};
function checkObj(checkProp) {
// Your Code Here
return "Change Me!";
}
// Test your code by modifying these values
checkObj("gift");
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,64 @@
---
id: 56533eb9ac21ba0edf2244ba
title: Understand String Immutability
challengeType: 1
videoUrl: ''
localeTitle: Понять неустойчивость струны
---
## Description
<section id="description"> В JavaScript значения <code>String</code> <dfn>неизменяемы</dfn> , а это значит, что они не могут быть изменены после создания. Например, следующий код: <blockquote> var myStr = &quot;Bob&quot;; <br> myStr [0] = &quot;J&quot;; </blockquote> не может изменить значение <code>myStr</code> на «Job», потому что содержимое <code>myStr</code> не может быть изменено. Обратите внимание, что это <em>не</em> означает, что <code>myStr</code> нельзя изменить, просто чтобы отдельные символы <dfn>строкового литерала</dfn> не могли быть изменены. Единственный способ изменить <code>myStr</code> - назначить ему новую строку, например: <blockquote> var myStr = &quot;Bob&quot;; <br> myStr = &quot;Job&quot;; </blockquote></section>
## Instructions
<section id="instructions"> Исправьте назначение <code>myStr</code> чтобы оно содержало строковое значение <code>Hello World</code> используя подход, показанный в приведенном выше примере. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>myStr</code> должен иметь значение <code>Hello World</code>
testString: 'assert(myStr === "Hello World", "<code>myStr</code> should have a value of <code>Hello World</code>");'
- text: Не меняйте код над строкой
testString: 'assert(/myStr = "Jello World"/.test(code), "Do not change the code above the line");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Setup
var myStr = "Jello World";
// Only change code below this line
myStr[0] = "H"; // Fix Me
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,66 @@
---
id: bd7123c9c441eddfaeb5bdef
title: Understanding Boolean Values
challengeType: 1
videoUrl: ''
localeTitle: Понимание булевых значений
---
## Description
<section id="description"> Другим типом данных является <dfn>логическое значение</dfn> . <code>Booleans</code> могут быть только одним из двух значений: <code>true</code> или <code>false</code> . Они в основном маленькие переключатели включения, где <code>true</code> - «включено», а <code>false</code> - «выключено». Эти два государства являются взаимоисключающими. <strong>Заметка</strong> <br> <code>Boolean</code> значения никогда не записываются с кавычками. <code>strings</code> <code>&quot;true&quot;</code> и <code>&quot;false&quot;</code> не являются <code>Boolean</code> и не имеют специального значения в JavaScript. </section>
## Instructions
<section id="instructions"> Измените функцию <code>welcomeToBooleans</code> так, чтобы он возвращал <code>true</code> вместо <code>false</code> при нажатии кнопки запуска. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Функция <code>welcomeToBooleans()</code> должна возвращать значение boolean (true / false).
testString: 'assert(typeof welcomeToBooleans() === "boolean", "The <code>welcomeToBooleans()</code> function should return a boolean &#40;true/false&#41; value.");'
- text: <code>welcomeToBooleans()</code> должен возвращать true.
testString: 'assert(welcomeToBooleans() === true, "<code>welcomeToBooleans()</code> should return true.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function welcomeToBooleans() {
// Only change code below this line.
return false; // Change this line
// Only change code above this line.
}
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,67 @@
---
id: 56533eb9ac21ba0edf2244ab
title: Understanding Case Sensitivity in Variables
challengeType: 1
videoUrl: ''
localeTitle: Понимание чувствительности к регистру в переменных
---
## Description
<section id="description"> В JavaScript все переменные и имена функций чувствительны к регистру. Это означает, что капитализация имеет значение. <code>MYVAR</code> - это не то же самое, что <code>MyVar</code> и <code>myvar</code> . Возможно иметь несколько разных переменных с одним и тем же именем, но с другим корпусом. Настоятельно рекомендуется, чтобы для ясности вы <em>не</em> использовали эту функцию языка. <h4> Лучшая практика </h4> Введите имена переменных в JavaScript в <dfn>camelCase</dfn> . В <dfn>camelCase</dfn> имена переменных с несколькими словами имеют первое слово в нижнем регистре, а первая буква каждого последующего слова заглавная. <strong>Примеры:</strong> <blockquote> var someVariable; <br> var anotherVariableName; <br> var thisVariableNameIsSoLong; </blockquote></section>
## Instructions
<section id="instructions"> Измените существующие объявления и задания, чтобы их имена использовали <dfn>camelCase</dfn> . <br> Не создавайте никаких новых переменных. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>studlyCapVar</code> определяется и имеет значение <code>10</code>
testString: 'assert(typeof studlyCapVar !== "undefined" && studlyCapVar === 10, "<code>studlyCapVar</code> is defined and has a value of <code>10</code>");'
- text: <code>properCamelCase</code> определяется и имеет значение <code>&quot;A String&quot;</code>
testString: 'assert(typeof properCamelCase !== "undefined" && properCamelCase === "A String", "<code>properCamelCase</code> is defined and has a value of <code>"A String"</code>");'
- text: <code>titleCaseOver</code> определяется и имеет значение <code>9000</code>
testString: 'assert(typeof titleCaseOver !== "undefined" && titleCaseOver === 9000, "<code>titleCaseOver</code> is defined and has a value of <code>9000</code>");'
- text: <code>studlyCapVar</code> должен использовать camelCase в разделах объявления и назначения.
testString: 'assert(code.match(/studlyCapVar/g).length === 2, "<code>studlyCapVar</code> should use camelCase in both declaration and assignment sections.");'
- text: <code>properCamelCase</code> должен использовать camelCase в разделах объявления и назначения.
testString: 'assert(code.match(/properCamelCase/g).length === 2, "<code>properCamelCase</code> should use camelCase in both declaration and assignment sections.");'
- text: <code>titleCaseOver</code> должен использовать camelCase в разделах объявления и назначения.
testString: 'assert(code.match(/titleCaseOver/g).length === 2, "<code>titleCaseOver</code> should use camelCase in both declaration and assignment sections.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Declarations
var StUdLyCapVaR;
var properCamelCase;
var TitleCaseOver;
// Assignments
STUDLYCAPVAR = 10;
PRoperCAmelCAse = "A String";
tITLEcASEoVER = 9000;
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,74 @@
---
id: 598e8944f009e646fc236146
title: Understanding Undefined Value returned from a Function
challengeType: 1
videoUrl: ''
localeTitle: 'Понимание неопределенного значения, возвращаемого функцией'
---
## Description
<section id="description"> Функция может включать оператор <code>return</code> но это не обязательно. В случае, если функция не имеет оператора <code>return</code> , когда вы вызываете его, функция обрабатывает внутренний код, но возвращаемое значение не <code>undefined</code> . <strong>пример</strong> <blockquote> var sum = 0; <br> function addSum (num) { <br> sum = sum + num; <br> } <br> var receivedValue = addSum (3); // сумма будет изменена, но возвращаемое значение не определено </blockquote> <code>addSum</code> - это функция без оператора <code>return</code> . Функция изменит глобальную переменную <code>sum</code> но возвращаемое значение функции не <code>undefined</code> </section>
## Instructions
<section id="instructions"> Создайте функцию <code>addFive</code> без каких-либо аргументов. Эта функция добавляет 5 к переменной <code>sum</code> , но ее возвращаемое значение не <code>undefined</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>addFive</code> должна быть функцией
testString: 'assert(typeof addFive === "function", "<code>addFive</code> should be a function");'
- text: <code>sum</code> должна быть равна 8
testString: 'assert(sum === 8, "<code>sum</code> should be equal to 8");'
- text: Возвращаемое значение из <code>addFive</code> должно быть <code>undefined</code>
testString: 'assert(addFive() === undefined, "Returned value from <code>addFive</code> should be <code>undefined</code>");'
- text: Внутри ваших функций добавьте 5 к переменной <code>sum</code>
testString: 'assert(code.match(/(sum\s*\=\s*sum\s*\+\s*5)|(sum\s*\+\=\s*5)/g).length === 1, "Inside of your functions, add 5 to the <code>sum</code> variable");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var sum = 0;
function addThree() {
sum = sum + 3;
}
// Only change code below this line
// Only change code above this line
var returnedValue = addFive();
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,72 @@
---
id: 56533eb9ac21ba0edf2244aa
title: Understanding Uninitialized Variables
challengeType: 1
videoUrl: ''
localeTitle: Понимание неинициализированных переменных
---
## Description
<section id="description"> Когда объявляются переменные JavaScript, они имеют начальное значение <code>undefined</code> . Если вы выполняете математическую операцию с <code>undefined</code> переменной, ваш результат будет <code>NaN</code> что означает <dfn>«Not a Number»</dfn> . Если вы конкатенируете строку с <code>undefined</code> переменной, вы получите буквенную <dfn>строку</dfn> <code>&quot;undefined&quot;</code> . </section>
## Instructions
<section id="instructions"> Инициализируйте три переменные <code>a</code> , <code>b</code> и <code>c</code> с <code>5</code> , <code>10</code> и <code>&quot;I am a&quot;</code> соответственно, чтобы они не были <code>undefined</code> . </section>
## Tests
<section id='tests'>
```yml
tests:
- text: '<code>a</code> следует определить и оценить, чтобы иметь значение <code>6</code>'
testString: 'assert(typeof a === "number" && a === 6, "<code>a</code> should be defined and evaluated to have the value of <code>6</code>");'
- text: '<code>b</code> следует определить и оценить, чтобы иметь значение <code>15</code>'
testString: 'assert(typeof b === "number" && b === 15, "<code>b</code> should be defined and evaluated to have the value of <code>15</code>");'
- text: <code>c</code> не должен содержать <code>undefined</code> и должен иметь значение «Я - String!».
testString: 'assert(!/undefined/.test(c) && c === "I am a String!", "<code>c</code> should not contain <code>undefined</code> and should have a value of "I am a String!"");'
- text: Не меняйте код под строкой
testString: 'assert(/a = a \+ 1;/.test(code) && /b = b \+ 5;/.test(code) && /c = c \+ " String!";/.test(code), "Do not change code below the line");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Initialize these three variables
var a;
var b;
var c;
// Do not change code below this line
a = a + 1;
b = b + 5;
c = c + " String!";
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,77 @@
---
id: 56bbb991ad1ed5201cd392d1
title: Updating Object Properties
challengeType: 1
videoUrl: ''
localeTitle: Обновление свойств объекта
---
## Description
<section id="description"> После того, как вы создали объект JavaScript, вы можете обновить его свойства в любое время, точно так же, как если бы вы обновили любую другую переменную. Вы можете использовать ноту или скобку для обновления. Например, давайте посмотрим на <code>ourDog</code> : <blockquote> var ourDog = { <br> «name»: «Camper», <br> «ноги»: 4, <br> «хвосты»: 1, <br> «друзья»: [«все!»] <br> }; </blockquote> Поскольку он очень счастливая собака, давайте сменим его имя на «Happy Camper». Вот как мы обновляем свойство его объекта: <code>ourDog.name = &quot;Happy Camper&quot;;</code> или <code>ourDog[&quot;name&quot;] = &quot;Happy Camper&quot;;</code> Теперь, когда мы оцениваем <code>ourDog.name</code> , вместо получения «Camper», мы получим его новое имя «Happy Camper». </section>
## Instructions
<section id="instructions"> Обновите свойство имени объекта <code>myDog</code> . Давайте изменим ее имя от «Coder» до «Happy Coder». Вы можете использовать либо точечную, либо скобку. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: Обновите свойство <code>&quot;name&quot;</code> <code>myDog</code> равным «Happy Coder».
testString: 'assert(/happy coder/gi.test(myDog.name), "Update <code>myDog</code>&apos;s <code>"name"</code> property to equal "Happy Coder".");'
- text: Не изменяйте определение <code>myDog</code>
testString: 'assert(/"name": "Coder"/.test(code), "Do not edit the <code>myDog</code> definition");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
ourDog.name = "Happy Camper";
// Setup
var myDog = {
"name": "Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"]
};
// Only change code below this line.
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,70 @@
---
id: bd7123c9c549eddfaeb5bdef
title: Use Bracket Notation to Find the First Character in a String
challengeType: 1
videoUrl: ''
localeTitle: Используйте условное обозначение скобки для поиска первого символа в строке
---
## Description
<section id="description"> <code>Bracket notation</code> - это способ получить символ с определенным <code>index</code> внутри строки. Большинство современных языков программирования, например JavaScript, не начинаются с 1, как люди. Они начинаются с 0. Это называется индексацией на <dfn>основе нуля</dfn> . Например, символ с индексом 0 в слове «Чарльз» - «С». Поэтому, если <code>var firstName = &quot;Charles&quot;</code> , вы можете получить значение первой буквы строки, используя <code>firstName[0]</code> . </section>
## Instructions
<section id="instructions"> Используйте <dfn>условное обозначение</dfn> в <dfn>скобках,</dfn> чтобы найти первый символ в переменной <code>lastName</code> и назначить его <code>firstLetterOfLastName</code> . <strong>намек</strong> <br> Попробуйте взглянуть на объявление <code>firstLetterOfFirstName</code> если вы застряли. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: В переменной <code>firstLetterOfLastName</code> должно быть значение <code>L</code>
testString: 'assert(firstLetterOfLastName === "L", "The <code>firstLetterOfLastName</code> variable should have the value of <code>L</code>.");'
- text: Вы должны использовать условное обозначение.
testString: 'assert(code.match(/firstLetterOfLastName\s*?=\s*?lastName\[.*?\]/), "You should use bracket notation.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var firstLetterOfFirstName = "";
var firstName = "Ada";
firstLetterOfFirstName = firstName[0];
// Setup
var firstLetterOfLastName = "";
var lastName = "Lovelace";
// Only change code below this line
firstLetterOfLastName = lastName;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,67 @@
---
id: bd7123c9c451eddfaeb5bdef
title: Use Bracket Notation to Find the Last Character in a String
challengeType: 1
videoUrl: ''
localeTitle: Использовать обозначение скобки для поиска последнего символа в строке
---
## Description
<section id="description"> Чтобы получить последнюю букву строки, вы можете вычесть ее из длины строки. Например, если <code>var firstName = &quot;Charles&quot;</code> , вы можете получить значение последней буквы строки, используя <code>firstName[firstName.length - 1]</code> . </section>
## Instructions
<section id="instructions"> Используйте <dfn>нотацию</dfn> в виде <dfn>скобок,</dfn> чтобы найти последний символ в переменной <code>lastName</code> . <strong>намек</strong> <br> Попробуйте просмотреть <code>lastLetterOfFirstName</code> переменной <code>lastLetterOfFirstName</code> если вы застряли. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>lastLetterOfLastName</code> должен быть «e».
testString: 'assert(lastLetterOfLastName === "e", "<code>lastLetterOfLastName</code> should be "e".");'
- text: Вы должны использовать <code>.length</code> для получения последней буквы.
testString: 'assert(code.match(/\.length/g).length === 2, "You have to use <code>.length</code> to get the last letter.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
// Setup
var lastName = "Lovelace";
// Only change code below this line.
var lastLetterOfLastName = lastName;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,67 @@
---
id: bd7123c9c450eddfaeb5bdef
title: Use Bracket Notation to Find the Nth Character in a String
challengeType: 1
videoUrl: ''
localeTitle: Использовать обозначения скобок для поиска N-го символа в строке
---
## Description
<section id="description"> Вы также можете использовать <dfn>нотацию</dfn> в виде <dfn>скобок,</dfn> чтобы получить символ в других позициях внутри строки. Помните, что компьютеры начинают отсчет в <code>0</code> , поэтому первый символ на самом деле является нулевым символом. </section>
## Instructions
<section id="instructions"> Попробуем установить для параметра <code>thirdLetterOfLastName</code> равную третью букву переменной <code>lastName</code> используя нотацию в виде скобок. <strong>намек</strong> <br> Попробуйте взглянуть на <code>secondLetterOfFirstName</code> переменной <code>secondLetterOfFirstName</code> если вы застряли. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>thirdLetterOfLastName</code> переменнаяLetterOfLastName должна иметь значение <code>v</code> .
testString: 'assert(thirdLetterOfLastName === "v", "The <code>thirdLetterOfLastName</code> variable should have the value of <code>v</code>.");'
- text: Вы должны использовать условное обозначение.
testString: 'assert(code.match(/thirdLetterOfLastName\s*?=\s*?lastName\[.*?\]/), "You should use bracket notation.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var firstName = "Ada";
var secondLetterOfFirstName = firstName[1];
// Setup
var lastName = "Lovelace";
// Only change code below this line.
var thirdLetterOfLastName = lastName;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,67 @@
---
id: bd7123c9c452eddfaeb5bdef
title: Use Bracket Notation to Find the Nth-to-Last Character in a String
challengeType: 1
videoUrl: ''
localeTitle: Используйте условное обозначение скобки для поиска символа Nth-to-Last в строке
---
## Description
<section id="description"> Вы можете использовать тот же принцип, который мы использовали для извлечения последнего символа в строке, чтобы получить символ Nth-to-last. Например, вы можете получить значение третьей-последней буквы строки <code>var firstName = &quot;Charles&quot;</code> , используя <code>firstName[firstName.length - 3]</code> </section>
## Instructions
<section id="instructions"> Используйте <dfn>нотацию</dfn> в виде <dfn>скобок,</dfn> чтобы найти второй-последний символ в строке <code>lastName</code> . <strong>намек</strong> <br> Попробуйте просмотреть <code>thirdToLastLetterOfFirstName</code> переменной <code>thirdToLastLetterOfFirstName</code> если вы застряли. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>secondToLastLetterOfLastName</code> должен быть «c».
testString: 'assert(secondToLastLetterOfLastName === "c", "<code>secondToLastLetterOfLastName</code> should be "c".");'
- text: Вы должны использовать <code>.length</code> для получения второй последней буквы.
testString: 'assert(code.match(/\.length/g).length === 2, "You have to use <code>.length</code> to get the second last letter.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
var firstName = "Ada";
var thirdToLastLetterOfFirstName = firstName[firstName.length - 3];
// Setup
var lastName = "Lovelace";
// Only change code below this line
var secondToLastLetterOfLastName = lastName;
```
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

View File

@ -0,0 +1,77 @@
---
id: cf1111c1c12feddfaeb3bdef
title: Use Conditional Logic with If Statements
challengeType: 1
videoUrl: ''
localeTitle: Использовать условную логику с утверждениями If
---
## Description
<section id="description"> <code>If</code> утверждения используются для принятия решений в коде. Ключевое слово <code>if</code> указывает JavaScript для выполнения кода в фигурных скобках при определенных условиях, определенных в круглых скобках. Эти условия известны как <code>Boolean</code> условия, и они могут быть <code>true</code> или <code>false</code> . Когда условие оценивается как <code>true</code> , программа выполняет оператор внутри фигурных скобок. Когда логическое условие оценивается как <code>false</code> , оператор внутри фигурных скобок не будет выполняться. <strong>ПСЕВДОКОД</strong> <blockquote> если ( <i>условие истинно</i> ) { <br> <i>выполняется инструкция</i> <br> } </blockquote> <strong>пример</strong> <blockquote> функциональный тест (myCondition) { <br> if (myCondition) { <br> возвращение «Это правда»; <br> } <br> return «Это было ложно»; <br> } <br> тест (истина); // возвращает «Это правда» <br> тест (ложь); // возвращает «Было ложно» </blockquote> Когда <code>test</code> вызывается со значением <code>true</code> , то <code>if</code> оператор оценивает <code>myCondition</code> , чтобы увидеть , если это <code>true</code> или нет. Так как это <code>true</code> , функция возвращает <code>&quot;It was true&quot;</code> . Когда мы вызываем <code>test</code> со значением <code>false</code> , <code>myCondition</code> <em>не</em> является <code>true</code> а оператор в фигурных скобках не выполняется, а функция возвращает <code>&quot;It was false&quot;</code> . </section>
## Instructions
<section id="instructions"> Создайте оператор <code>if</code> внутри функции, чтобы вернуть <code>&quot;Yes, that was true&quot;</code> если параметр <code>wasThatTrue</code> является <code>true</code> и возвращает <code>&quot;No, that was false&quot;</code> противном случае. </section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>trueOrFalse</code> должен быть функцией
testString: 'assert(typeof trueOrFalse === "function", "<code>trueOrFalse</code> should be a function");'
- text: <code>trueOrFalse(true)</code> должен возвращать строку
testString: 'assert(typeof trueOrFalse(true) === "string", "<code>trueOrFalse(true)</code> should return a string");'
- text: <code>trueOrFalse(false)</code> должен возвращать строку
testString: 'assert(typeof trueOrFalse(false) === "string", "<code>trueOrFalse(false)</code> should return a string");'
- text: '<code>trueOrFalse(true)</code> должен возвращать «Да, это было правдой»'
testString: 'assert(trueOrFalse(true) === "Yes, that was true", "<code>trueOrFalse(true)</code> should return "Yes, that was true"");'
- text: '<code>trueOrFalse(false)</code> должен возвращать «Нет, это было неверно»'
testString: 'assert(trueOrFalse(false) === "No, that was false", "<code>trueOrFalse(false)</code> should return "No, that was false"");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
// Example
function ourTrueOrFalse(isItTrue) {
if (isItTrue) {
return "Yes, it's true";
}
return "No, it's false";
}
// Setup
function trueOrFalse(wasThatTrue) {
// Only change code below this line.
// Only change code above this line.
}
// Change this value to test
trueOrFalse(true);
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>

Some files were not shown because too many files have changed in this diff Show More