fix(curriculum): fix challenges for russian language

This commit is contained in:
Valeriy S
2019-08-28 16:26:13 +03:00
committed by mrugesh
parent a17c3c44aa
commit 12f65a6742
1418 changed files with 39634 additions and 19395 deletions

View File

@@ -2,25 +2,30 @@
id: 56bbb991ad1ed5201cd392ca
title: Access Array Data with Indexes
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cBZQbTz
forumTopicId: 16158
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>
<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>
<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.");'
- text: The variable <code>myData</code> should equal the first value of <code>myArray</code>.
testString: assert((function(){if(typeof myArray !== 'undefined' && typeof myData !== 'undefined' && myArray[0] === myData){return true;}else{return false;}})());
- text: The data in variable <code>myArray</code> should be accessed using bracket notation.
testString: assert((function(){if(code.match(/\s*=\s*myArray\[0\]/g)){return true;}else{return false;}})());
```
@@ -45,12 +50,12 @@ var myArray = [50,60,70];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myArray !== "undefined" && typeof myData !== "undefined"){(function(y,z){return 'myArray = ' + JSON.stringify(y) + ', myData = ' + JSON.stringify(z);})(myArray, myData);}
```
</div>
@@ -61,6 +66,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [50,60,70];
var myData = myArray[0];
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56592a60ddddeae28f7aa8e1
title: Access Multi-Dimensional Arrays With Indexes
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/ckND4Cq
forumTopicId: 16159
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>
<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>
<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>.");'
- text: <code>myData</code> should be equal to <code>8</code>.
testString: assert(myData === 8);
- text: You should be using bracket notation to read the correct value from <code>myArray</code>.
testString: assert(/myData=myArray\[2\]\[1\]/.test(code.replace(/\s/g, '')));
```
@@ -42,12 +47,12 @@ var myData = myArray[0][0];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myArray !== "undefined"){(function(){return "myData: " + myData + " myArray: " + JSON.stringify(myArray);})();}
```
</div>
@@ -58,6 +63,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [[1,2,3],[4,5,6], [7,8,9], [[10,11,12], 13, 14]];
var myData = myArray[2][1];
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244cd
title: Accessing Nested Arrays
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cLeGDtZ
forumTopicId: 16160
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>
<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>
<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>");'
- text: <code>secondTree</code> should equal "pine"
testString: assert(secondTree === "pine");
- text: Use dot and bracket notation to access <code>myPlants</code>
testString: assert(/=\s*myPlants\[1\].list\[1\]/.test(code));
```
@@ -60,12 +65,17 @@ var secondTree = ""; // Change this line
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(x) {
if(typeof x != 'undefined') {
return "secondTree = " + x;
}
return "secondTree is undefined";
})(secondTree);
```
</div>
@@ -76,6 +86,28 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myPlants = [
{
type: "flowers",
list: [
"rose",
"tulip",
"dandelion"
]
},
{
type: "trees",
list: [
"fir",
"pine",
"birch"
]
}
];
// Only change code below this line
var secondTree = myPlants[1].list[1];
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244cc
title: Accessing Nested Objects
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cRnRnfa
forumTopicId: 16161
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>
<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>
<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>");'
- text: <code>gloveBoxContents</code> should equal "maps"
testString: assert(gloveBoxContents === "maps");
- text: Use dot and bracket notation to access <code>myStorage</code>
testString: assert(/=\s*myStorage\.car\.inside\[\s*("|')glove box\1\s*\]/g.test(code));
```
@@ -51,12 +56,17 @@ var gloveBoxContents = undefined; // Change this line
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(x) {
if(typeof x != 'undefined') {
return "gloveBoxContents = " + x;
}
return "gloveBoxContents is undefined";
})(gloveBoxContents);
```
</div>
@@ -67,6 +77,18 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myStorage = {
"car":{
"inside":{
"glove box":"maps",
"passenger seat":"crumbs"
},
"outside":{
"trunk":"jack"
}
}
};
var gloveBoxContents = myStorage.car.inside["glove box"];
```
</section>

View File

@@ -2,31 +2,36 @@
id: 56533eb9ac21ba0edf2244c8
title: Accessing Object Properties with Bracket Notation
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cBvmEHP
forumTopicId: 16163
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>
<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>
<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");'
- text: <code>entreeValue</code> should be a string
testString: assert(typeof entreeValue === 'string' );
- text: The value of <code>entreeValue</code> should be <code>"hamburger"</code>
testString: assert(entreeValue === 'hamburger' );
- text: <code>drinkValue</code> should be a string
testString: assert(typeof drinkValue === 'string' );
- text: The value of <code>drinkValue</code> should be <code>"water"</code>
testString: assert(drinkValue === 'water' );
- text: You should use bracket notation twice
testString: assert(code.match(/testObj\s*?\[('|")[^'"]+\1\]/g).length > 1);
```
@@ -54,12 +59,12 @@ var drinkValue = testObj; // Change this line
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(a,b) { return "entreeValue = '" + a + "', drinkValue = '" + b + "'"; })(entreeValue,drinkValue);
```
</div>
@@ -70,6 +75,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var testObj = {
"an entree": "hamburger",
"my side": "veggies",
"the drink": "water"
};
var entreeValue = testObj["an entree"];
var drinkValue = testObj['the drink'];
```
</section>

View File

@@ -2,31 +2,48 @@
id: 56533eb9ac21ba0edf2244c7
title: Accessing Object Properties with Dot Notation
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cGryJs8
forumTopicId: 16164
localeTitle: Доступ к объектным свойствам с нотами Dot
---
## Description
undefined
<section id='description'>
There are two ways to access the properties of an object: dot notation (<code>.</code>) and bracket notation (<code>[]</code>), similar to an array.
Dot notation is what you use when you know the name of the property you're trying to access ahead of time.
Here is a sample of using dot notation (<code>.</code>) to read an object's property:
```js
var myObj = {
prop1: "val1",
prop2: "val2"
};
var prop1val = myObj.prop1; // val1
var prop2val = myObj.prop2; // val2
```
</section>
## Instructions
<section id="instructions"> Прочитайте значения свойств <code>testObj</code> с использованием точечной нотации. Установите переменную <code>hatValue</code> равное свойству объекта <code>hat</code> и установить переменную <code>shirtValue</code> равной свойству объекта <code>shirt</code> . </section>
<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");'
- text: <code>hatValue</code> should be a string
testString: assert(typeof hatValue === 'string' );
- text: The value of <code>hatValue</code> should be <code>"ballcap"</code>
testString: assert(hatValue === 'ballcap' );
- text: <code>shirtValue</code> should be a string
testString: assert(typeof shirtValue === 'string' );
- text: The value of <code>shirtValue</code> should be <code>"jersey"</code>
testString: assert(shirtValue === 'jersey' );
- text: You should use dot notation twice
testString: assert(code.match(/testObj\.\w+/g).length > 1);
```
@@ -54,12 +71,12 @@ var shirtValue = testObj; // Change this line
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(a,b) { return "hatValue = '" + a + "', shirtValue = '" + b + "'"; })(hatValue,shirtValue);
```
</div>
@@ -70,6 +87,14 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var testObj = {
"hat": "ballcap",
"shirt": "jersey",
"shoes": "cleats"
};
var hatValue = testObj.hat;
var shirtValue = testObj.shirt;
```
</section>

View File

@@ -2,33 +2,38 @@
id: 56533eb9ac21ba0edf2244c9
title: Accessing Object Properties with Variables
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cnQyKur
forumTopicId: 16165
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>
<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>
<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");'
- text: <code>playerNumber</code> should be a number
testString: assert(typeof playerNumber === 'number');
- text: The variable <code>player</code> should be a string
testString: assert(typeof player === 'string');
- text: The value of <code>player</code> should be "Montana"
testString: assert(player === 'Montana');
- text: You should use bracket notation to access <code>testObj</code>
testString: assert(/testObj\s*?\[.*?\]/.test(code));
- text: You should not assign the value <code>Montana</code> to the variable <code>player</code> directly.
testString: assert(!code.match(/player\s*=\s*"|\'\s*Montana\s*"|\'\s*;/gi));
- text: You should be using the variable <code>playerNumber</code> in your bracket notation
testString: assert(/testObj\s*?\[\s*playerNumber\s*\]/.test(code));
```
@@ -56,12 +61,12 @@ var player = testObj; // Change this Line
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof player !== "undefined"){(function(v){return v;})(player);}
```
</div>
@@ -72,6 +77,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var testObj = {
12: "Namath",
16: "Montana",
19: "Unitas"
};
var playerNumber = 16;
var player = testObj[playerNumber];
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56bbb991ad1ed5201cd392d2
title: Add New Properties to a JavaScript Object
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cQe38UD
forumTopicId: 301169
localeTitle: Добавление новых свойств в объект JavaScript
---
## Description
<section id="description"> Вы можете добавлять новые свойства к существующим объектам JavaScript так же, как вы их модифицировали. Вот как мы добавим свойство <code>&quot;bark&quot;</code> в объект <code>ourDog</code> : <code>ourDog.bark = &quot;гав-гав&quot;;</code> или <code>ourDog[&quot;bark&quot;] = &quot;гав-гав&quot;;</code> Теперь, когда мы вызовем <code>ourDog.bark</code> , мы получим значение записанного свойства - <code>&quot;гав-гав&quot;</code>. </section>
<section id='description'>
Вы можете добавлять новые свойства к существующим объектам JavaScript так же, как вы их модифицировали. Вот как мы добавим свойство <code>&quot;bark&quot;</code> в объект <code>ourDog</code> : <code>ourDog.bark = &quot;гав-гав&quot;;</code> или <code>ourDog[&quot;bark&quot;] = &quot;гав-гав&quot;;</code> Теперь, когда мы вызовем <code>ourDog.bark</code> , мы получим значение записанного свойства - <code>&quot;гав-гав&quot;</code>.
</section>
## Instructions
<section id="instructions"> Добавьте свойство <code>&quot;bark&quot;</code> в объект <code>myDog</code> и присвойте этому свойству звук который издает собака, например "гав". Вы можете использовать точку или квадратные скобки для задания свойства объекта.</section>
<section id='instructions'>
Добавьте свойство <code>&quot;bark&quot;</code> в объект <code>myDog</code> и присвойте этому свойству звук который издает собака, например "гав". Вы можете использовать точку или квадратные скобки для задания свойства объекта.
</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> в раздел <code>// Setup</code>
testString: 'assert(!/bark[^\n]:/.test(code), "Do not add <code>"bark"</code> to the setup section");'
- text: Add the property <code>"bark"</code> to <code>myDog</code>.
testString: assert(myDog.bark !== undefined);
- text: Do not add <code>"bark"</code> to the setup section
testString: assert(!/bark[^\n]:/.test(code));
```
@@ -34,13 +39,13 @@ tests:
```js
// Example
var ourDog = {
"name": "Барбос",
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
ourDog.bark = "гав-гав";
ourDog.bark = "bow-wow";
// Setup
var myDog = {
@@ -56,12 +61,12 @@ var myDog = {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
(function(z){return z;})(myDog);
```
</div>
@@ -78,6 +83,7 @@ var myDog = {
"tails": 1,
"friends": ["freeCodeCamp Campers"]
};
myDog.bark = "Гав";
myDog.bark = "Woof Woof";
```
</section>

View File

@@ -2,25 +2,30 @@
id: cf1111c1c11feddfaeb3bdef
title: Add Two Numbers with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cM2KBAG
forumTopicId: 16650
localeTitle: Сложить два числа с JavaScript
---
## Description
<section id="description"> <code>Number</code> - это тип данных в JavaScript, который представляет числовые данные. Теперь попробуем добавить два числа, используя JavaScript. JavaScript использует символ <code>+</code> в качестве операции сложения при размещении между двумя числами. <strong>пример</strong> <blockquote> myVar = 5 + 10; // присвоено 15 </blockquote></section>
<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>
<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");'
- text: <code>sum</code> should equal <code>20</code>
testString: assert(sum === 20);
- text: Use the <code>+</code> operator
testString: assert(/\+/.test(code));
```
@@ -38,12 +43,12 @@ var sum = 10 + 0;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return 'sum = '+z;})(sum);
```
</div>
@@ -54,6 +59,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var sum = 10 + 10;
```
</section>

View File

@@ -2,37 +2,42 @@
id: 56533eb9ac21ba0edf2244de
title: Adding a Default Option in Switch Statements
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c3JvVfg
forumTopicId: 16653
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>
<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>
<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");'
- text: <code>switchOfStuff("a")</code> should have a value of "apple"
testString: assert(switchOfStuff("a") === "apple");
- text: <code>switchOfStuff("b")</code> should have a value of "bird"
testString: assert(switchOfStuff("b") === "bird");
- text: <code>switchOfStuff("c")</code> should have a value of "cat"
testString: assert(switchOfStuff("c") === "cat");
- text: <code>switchOfStuff("d")</code> should have a value of "stuff"
testString: assert(switchOfStuff("d") === "stuff");
- text: <code>switchOfStuff(4)</code> should have a value of "stuff"
testString: assert(switchOfStuff(4) === "stuff");
- text: You should not use any <code>if</code> or <code>else</code> statements
testString: assert(!/else/g.test(code) || !/if/g.test(code));
- text: You should use a <code>default</code> statement
testString: assert(switchOfStuff("string-to-trigger-default-case") === "stuff");
- text: You should have at least 3 <code>break</code> statements
testString: assert(code.match(/break/g).length > 2);
```
@@ -61,14 +66,30 @@ switchOfStuff(1);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function switchOfStuff(val) {
var answer = "";
switch(val) {
case "a":
answer = "apple";
break;
case "b":
answer = "bird";
break;
case "c":
answer = "cat";
break;
default:
answer = "stuff";
}
return answer;
}
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244ed
title: Appending Variables to Strings
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cbQmZfa
forumTopicId: 16656
localeTitle: Добавление переменных в строки
---
## Description
<section id="description"> Так же, как мы можем построить строку из нескольких строк из строковых <dfn>литералов</dfn> , мы также можем добавить переменные в строку, используя оператор equals ( <code>+=</code> ). </section>
<section id='description'>
Так же, как мы можем построить строку из нескольких строк из строковых <dfn>литералов</dfn> , мы также можем добавить переменные в строку, используя оператор equals ( <code>+=</code> ).
</section>
## Instructions
<section id="instructions"> Установите <code>someAdjective</code> и добавьте его в <code>myStr</code> используя оператор <code>+=</code> . </section>
<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");'
- text: <code>someAdjective</code> should be set to a string at least 3 characters long
testString: assert(typeof someAdjective !== 'undefined' && someAdjective.length > 2);
- text: Append <code>someAdjective</code> to <code>myStr</code> using the <code>+=</code> operator
testString: assert(code.match(/myStr\s*\+=\s*someAdjective\s*/).length > 0);
```
@@ -46,12 +51,25 @@ var myStr = "Learning to code is ";
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){
var output = [];
if(typeof someAdjective === 'string') {
output.push('someAdjective = "' + someAdjective + '"');
} else {
output.push('someAdjective is not a string');
}
if(typeof myStr === 'string') {
output.push('myStr = "' + myStr + '"');
} else {
output.push('myStr is not a string');
}
return output.join('\n');
})();
```
</div>
@@ -62,6 +80,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var anAdjective = "awesome!";
var ourStr = "freeCodeCamp is ";
ourStr += anAdjective;
var someAdjective = "neat";
var myStr = "Learning to code is ";
myStr += someAdjective;
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244c3
title: Assignment with a Returned Value
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/ce2pEtB
forumTopicId: 16658
localeTitle: Назначение с возвращенной стоимостью
---
## Description
<section id="description"> Если вы вспомните из нашего обсуждения « <a href="learn/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>
<section id='description'>
Если вы вспомните из нашего обсуждения « <a href="learn/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>
<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>");'
- text: <code>processed</code> should have a value of <code>2</code>
testString: assert(processed === 2);
- text: You should assign <code>processArg</code> to <code>processed</code>
testString: assert(/processed\s*=\s*processArg\(\s*7\s*\)/.test(code));
```
@@ -54,12 +59,12 @@ function processArg(num) {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){return "processed = " + processed})();
```
</div>
@@ -70,6 +75,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var processed = 0;
function processArg(num) {
return (num + 3) / 5;
}
processed = processArg(7);
```
</section>

View File

@@ -2,31 +2,36 @@
id: 56bbb991ad1ed5201cd392d0
title: Build JavaScript Objects
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cWGkbtd
forumTopicId: 16769
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>
<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>
<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.");'
- text: <code>myDog</code> should contain the property <code>name</code> and it should be a <code>string</code>.
testString: assert((function(z){if(z.hasOwnProperty("name") && z.name !== undefined && typeof z.name === "string"){return true;}else{return false;}})(myDog));
- text: <code>myDog</code> should contain the property <code>legs</code> and it should be a <code>number</code>.
testString: assert((function(z){if(z.hasOwnProperty("legs") && z.legs !== undefined && typeof z.legs === "number"){return true;}else{return false;}})(myDog));
- text: <code>myDog</code> should contain the property <code>tails</code> and it should be a <code>number</code>.
testString: assert((function(z){if(z.hasOwnProperty("tails") && z.tails !== undefined && typeof z.tails === "number"){return true;}else{return false;}})(myDog));
- text: <code>myDog</code> should contain the property <code>friends</code> and it should be an <code>array</code>.
testString: assert((function(z){if(z.hasOwnProperty("friends") && z.friends !== undefined && Array.isArray(z.friends)){return true;}else{return false;}})(myDog));
- text: <code>myDog</code> should only contain all the given properties.
testString: assert((function(z){return Object.keys(z).length === 4;})(myDog));
```
@@ -59,12 +64,12 @@ var myDog = {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return z;})(myDog);
```
</div>
@@ -75,6 +80,12 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
```
</section>

View File

@@ -2,47 +2,52 @@
id: 56533eb9ac21ba0edf2244dc
title: Chaining If Else Statements
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/caeJgsw
forumTopicId: 16772
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>
<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>
<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"");'
- text: You should have at least four <code>else</code> statements
testString: assert(code.match(/else/g).length > 3);
- text: You should have at least four <code>if</code> statements
testString: assert(code.match(/if/g).length > 3);
- text: You should have at least one <code>return</code> statement
testString: assert(code.match(/return/g).length >= 1);
- text: <code>testSize(0)</code> should return "Tiny"
testString: assert(testSize(0) === "Tiny");
- text: <code>testSize(4)</code> should return "Tiny"
testString: assert(testSize(4) === "Tiny");
- text: <code>testSize(5)</code> should return "Small"
testString: assert(testSize(5) === "Small");
- text: <code>testSize(8)</code> should return "Small"
testString: assert(testSize(8) === "Small");
- text: <code>testSize(10)</code> should return "Medium"
testString: assert(testSize(10) === "Medium");
- text: <code>testSize(14)</code> should return "Medium"
testString: assert(testSize(14) === "Medium");
- text: <code>testSize(15)</code> should return "Large"
testString: assert(testSize(15) === "Large");
- text: <code>testSize(17)</code> should return "Large"
testString: assert(testSize(17) === "Large");
- text: <code>testSize(20)</code> should return "Huge"
testString: assert(testSize(20) === "Huge");
- text: <code>testSize(25)</code> should return "Huge"
testString: assert(testSize(25) === "Huge");
```
@@ -69,14 +74,25 @@ testSize(7);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testSize(num) {
if (num < 5) {
return "Tiny";
} else if (num < 10) {
return "Small";
} else if (num < 15) {
return "Medium";
} else if (num < 20) {
return "Large";
} else {
return "Huge";
}
}
```
</section>

View File

@@ -2,31 +2,36 @@
id: bd7123c9c441eddfaeb4bdef
title: Comment Your JavaScript Code
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c7ynnTp
forumTopicId: 16783
localeTitle: Комментарии в коде
---
## Description
<section id="description"> Комментарии представляют собой строки кода, которые JavaScript игнорирует. Использование комментариев является отличным способом оставить заметки себе или другим, кому придется разбираться в работе кода.
<section id='description'>
Комментарии представляют собой строки кода, которые JavaScript игнорирует. Использование комментариев является отличным способом оставить заметки себе или другим, кому придется разбираться в работе кода.
Комментарии в JavaScript бывают двух видов :
Два идущих подряд слэша <code>//</code> являются указанием игнорировать весь идущий за ними текст на этой строке:
<blockquote> // Это комментарий в строке. </blockquote>
Также можно сделать многострочный комментарий: он должен начинаться с <code>/*</code> и заканчиваться на <code>*/</code> :
<blockquote> /* Это <br> многострочный комментарий * / </blockquote>
<strong>Лучшая практика</strong> <br> В процессе написания кода имеет смысл регулярно добавлять комментарии, в которых будет описываться функциональность различных частей кода. Хороший комментарий может помочь разобраться в сути вашего кода - как другим людям, так <em>и</em> вам в будущем. </section>
<strong>Лучшая практика</strong> <br> В процессе написания кода имеет смысл регулярно добавлять комментарии, в которых будет описываться функциональность различных частей кода. Хороший комментарий может помочь разобраться в сути вашего кода - как другим людям, так <em>и</em> вам в будущем.
</section>
## Instructions
<section id="instructions"> Попробуйте создать один из комментариев каждого вида. </section>
<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> , содержащий не менее пяти букв.'
testString: 'assert(code.match(/(\/\*)([^\/]{5,})(?=\*\/)/gm), "Create a <code>/* */</code> style comment that contains at least five letters.");'
- text: Create a <code>//</code> style comment that contains at least five letters.
testString: assert(code.match(/(\/\/)...../g));
- text: Create a <code>/* */</code> style comment that contains at least five letters.
testString: assert(code.match(/(\/\*)([^\/]{5,})(?=\*\/)/gm));
```
@@ -43,17 +48,14 @@ tests:
</div>
</section>
## Solution
<section id='solution'>
```js
// Однострочный комментарий
/*
Многострочный комментарий
*/
// Fake Comment
/* Another Comment */
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244d0
title: Comparison with the Equality Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cKyVMAL
forumTopicId: 16784
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>
<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>
<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");'
- text: <code>testEqual(10)</code> should return "Not Equal"
testString: assert(testEqual(10) === "Not Equal");
- text: <code>testEqual(12)</code> should return "Equal"
testString: assert(testEqual(12) === "Equal");
- text: <code>testEqual("12")</code> should return "Equal"
testString: assert(testEqual("12") === "Equal");
- text: You should use the <code>==</code> operator
testString: assert(code.match(/==/g) && !code.match(/===/g));
```
@@ -51,14 +56,18 @@ testEqual(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testEqual(val) {
if (val == 12) {
return "Equal";
}
return "Not Equal";
}
```
</section>

View File

@@ -2,37 +2,42 @@
id: 56533eb9ac21ba0edf2244d4
title: Comparison with the Greater Than Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cp6GbH4
forumTopicId: 16786
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>
<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>
<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");'
- text: <code>testGreaterThan(0)</code> should return "10 or Under"
testString: assert(testGreaterThan(0) === "10 or Under");
- text: <code>testGreaterThan(10)</code> should return "10 or Under"
testString: assert(testGreaterThan(10) === "10 or Under");
- text: <code>testGreaterThan(11)</code> should return "Over 10"
testString: assert(testGreaterThan(11) === "Over 10");
- text: <code>testGreaterThan(99)</code> should return "Over 10"
testString: assert(testGreaterThan(99) === "Over 10");
- text: <code>testGreaterThan(100)</code> should return "Over 10"
testString: assert(testGreaterThan(100) === "Over 10");
- text: <code>testGreaterThan(101)</code> should return "Over 100"
testString: assert(testGreaterThan(101) === "Over 100");
- text: <code>testGreaterThan(150)</code> should return "Over 100"
testString: assert(testGreaterThan(150) === "Over 100");
- text: You should use the <code>&gt;</code> operator at least twice
testString: assert(code.match(/val\s*>\s*('|")*\d+('|")*/g).length > 1);
```
@@ -63,14 +68,21 @@ testGreaterThan(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testGreaterThan(val) {
if (val > 100) { // Change this line
return "Over 100";
}
if (val > 10) { // Change this line
return "Over 10";
}
return "10 or Under";
}
```
</section>

View File

@@ -2,37 +2,42 @@
id: 56533eb9ac21ba0edf2244d5
title: Comparison with the Greater Than Or Equal To Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c6KBqtV
forumTopicId: 16785
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>
<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>
<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");'
- text: <code>testGreaterOrEqual(0)</code> should return "Less than 10"
testString: assert(testGreaterOrEqual(0) === "Less than 10");
- text: <code>testGreaterOrEqual(9)</code> should return "Less than 10"
testString: assert(testGreaterOrEqual(9) === "Less than 10");
- text: <code>testGreaterOrEqual(10)</code> should return "10 or Over"
testString: assert(testGreaterOrEqual(10) === "10 or Over");
- text: <code>testGreaterOrEqual(11)</code> should return "10 or Over"
testString: assert(testGreaterOrEqual(11) === "10 or Over");
- text: <code>testGreaterOrEqual(19)</code> should return "10 or Over"
testString: assert(testGreaterOrEqual(19) === "10 or Over");
- text: <code>testGreaterOrEqual(100)</code> should return "20 or Over"
testString: assert(testGreaterOrEqual(100) === "20 or Over");
- text: <code>testGreaterOrEqual(21)</code> should return "20 or Over"
testString: assert(testGreaterOrEqual(21) === "20 or Over");
- text: You should use the <code>&gt;=</code> operator at least twice
testString: assert(code.match(/val\s*>=\s*('|")*\d+('|")*/g).length > 1);
```
@@ -63,14 +68,23 @@ testGreaterOrEqual(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testGreaterOrEqual(val) {
if (val >= 20) { // Change this line
return "20 or Over";
}
if (val >= 10) { // Change this line
return "10 or Over";
}
return "Less than 10";
}
```
</section>

View File

@@ -2,33 +2,38 @@
id: 56533eb9ac21ba0edf2244d2
title: Comparison with the Inequality Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cdBm9Sr
forumTopicId: 16787
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>
<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>
<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");'
- text: <code>testNotEqual(99)</code> should return "Equal"
testString: assert(testNotEqual(99) === "Equal");
- text: <code>testNotEqual("99")</code> should return "Equal"
testString: assert(testNotEqual("99") === "Equal");
- text: <code>testNotEqual(12)</code> should return "Not Equal"
testString: assert(testNotEqual(12) === "Not Equal");
- text: <code>testNotEqual("12")</code> should return "Not Equal"
testString: assert(testNotEqual("12") === "Not Equal");
- text: <code>testNotEqual("bob")</code> should return "Not Equal"
testString: assert(testNotEqual("bob") === "Not Equal");
- text: You should use the <code>!=</code> operator
testString: assert(code.match(/(?!!==)!=/));
```
@@ -55,14 +60,18 @@ testNotEqual(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testNotEqual(val) {
if (val != 99) {
return "Not Equal";
}
return "Equal";
}
```
</section>

View File

@@ -2,35 +2,40 @@
id: 56533eb9ac21ba0edf2244d6
title: Comparison with the Less Than Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cNVRWtB
forumTopicId: 16789
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>
<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>
<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");'
- text: <code>testLessThan(0)</code> should return "Under 25"
testString: assert(testLessThan(0) === "Under 25");
- text: <code>testLessThan(24)</code> should return "Under 25"
testString: assert(testLessThan(24) === "Under 25");
- text: <code>testLessThan(25)</code> should return "Under 55"
testString: assert(testLessThan(25) === "Under 55");
- text: <code>testLessThan(54)</code> should return "Under 55"
testString: assert(testLessThan(54) === "Under 55");
- text: <code>testLessThan(55)</code> should return "55 or Over"
testString: assert(testLessThan(55) === "55 or Over");
- text: <code>testLessThan(99)</code> should return "55 or Over"
testString: assert(testLessThan(99) === "55 or Over");
- text: You should use the <code>&lt;</code> operator at least twice
testString: assert(code.match(/val\s*<\s*('|")*\d+('|")*/g).length > 1);
```
@@ -61,14 +66,23 @@ testLessThan(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testLessThan(val) {
if (val < 25) { // Change this line
return "Under 25";
}
if (val < 55) { // Change this line
return "Under 55";
}
return "55 or Over";
}
```
</section>

View File

@@ -2,37 +2,42 @@
id: 56533eb9ac21ba0edf2244d7
title: Comparison with the Less Than Or Equal To Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cNVR7Am
forumTopicId: 16788
localeTitle: Сравнение с меньшим или равным оператору
---
## Description
<section id="description"> Оператор ( <code>&lt;=</code> ) (<code>less than or equal to</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>
<section id='description'>
Оператор ( <code>&lt;=</code> ) (<code>less than or equal to</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>&lt;=</code> ) чтобы функция работала правильно. </section>
<section id='instructions'>
Добавьте оператор ( <code>&lt;=</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");'
- text: <code>testLessOrEqual(0)</code> should return "Smaller Than or Equal to 12"
testString: assert(testLessOrEqual(0) === "Smaller Than or Equal to 12");
- text: <code>testLessOrEqual(11)</code> should return "Smaller Than or Equal to 12"
testString: assert(testLessOrEqual(11) === "Smaller Than or Equal to 12");
- text: <code>testLessOrEqual(12)</code> should return "Smaller Than or Equal to 12"
testString: assert(testLessOrEqual(12) === "Smaller Than or Equal to 12");
- text: <code>testLessOrEqual(23)</code> should return "Smaller Than or Equal to 24"
testString: assert(testLessOrEqual(23) === "Smaller Than or Equal to 24");
- text: <code>testLessOrEqual(24)</code> should return "Smaller Than or Equal to 24"
testString: assert(testLessOrEqual(24) === "Smaller Than or Equal to 24");
- text: <code>testLessOrEqual(25)</code> should return "More Than 24"
testString: assert(testLessOrEqual(25) === "More Than 24");
- text: <code>testLessOrEqual(55)</code> should return "More Than 24"
testString: assert(testLessOrEqual(55) === "More Than 24");
- text: You should use the <code>&lt;=</code> operator at least twice
testString: assert(code.match(/val\s*<=\s*('|")*\d+('|")*/g).length > 1);
```
@@ -63,14 +68,23 @@ testLessOrEqual(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testLessOrEqual(val) {
if (val <= 12) { // Change this line
return "Smaller Than or Equal to 12";
}
if (val <= 24) { // Change this line
return "Smaller Than or Equal to 24";
}
return "More Than 24";
}
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244d1
title: Comparison with the Strict Equality Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cy87atr
forumTopicId: 16790
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>
<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>
<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");'
- text: <code>testStrict(10)</code> should return "Not Equal"
testString: assert(testStrict(10) === "Not Equal");
- text: <code>testStrict(7)</code> should return "Equal"
testString: assert(testStrict(7) === "Equal");
- text: <code>testStrict("7")</code> should return "Not Equal"
testString: assert(testStrict("7") === "Not Equal");
- text: You should use the <code>===</code> operator
testString: assert(code.match(/(val\s*===\s*\d+)|(\d+\s*===\s*val)/g).length > 0);
```
@@ -51,14 +56,18 @@ testStrict(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testStrict(val) {
if (val === 7) {
return "Equal";
}
return "Not Equal";
}
```
</section>

View File

@@ -2,31 +2,36 @@
id: 56533eb9ac21ba0edf2244d3
title: Comparison with the Strict Inequality Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cKekkUy
forumTopicId: 16791
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>
<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>
<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");'
- text: <code>testStrictNotEqual(17)</code> should return "Equal"
testString: assert(testStrictNotEqual(17) === "Equal");
- text: <code>testStrictNotEqual("17")</code> should return "Not Equal"
testString: assert(testStrictNotEqual("17") === "Not Equal");
- text: <code>testStrictNotEqual(12)</code> should return "Not Equal"
testString: assert(testStrictNotEqual(12) === "Not Equal");
- text: <code>testStrictNotEqual("bob")</code> should return "Not Equal"
testString: assert(testStrictNotEqual("bob") === "Not Equal");
- text: You should use the <code>!==</code> operator
testString: assert(code.match(/(val\s*!==\s*\d+)|(\d+\s*!==\s*val)/g).length > 0);
```
@@ -40,12 +45,7 @@ tests:
```js
// Setup
function testStrictNotEqual(val) {
// Only Change Code Below this Line
if (val) {
// Only Change Code Above this Line
if (val) { // Change this line
return "Not Equal";
}
return "Equal";
@@ -58,14 +58,18 @@ testStrictNotEqual(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testStrictNotEqual(val) {
if (val !== 17) {
return "Not Equal";
}
return "Equal";
}
```
</section>

View File

@@ -2,41 +2,46 @@
id: 56533eb9ac21ba0edf2244d8
title: Comparisons with the Logical And Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cvbRVtr
forumTopicId: 16799
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>
<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>
<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"");'
- text: You should use the <code>&&</code> operator once
testString: assert(code.match(/&&/g).length === 1);
- text: You should only have one <code>if</code> statement
testString: assert(code.match(/if/g).length === 1);
- text: <code>testLogicalAnd(0)</code> should return "No"
testString: assert(testLogicalAnd(0) === "No");
- text: <code>testLogicalAnd(24)</code> should return "No"
testString: assert(testLogicalAnd(24) === "No");
- text: <code>testLogicalAnd(25)</code> should return "Yes"
testString: assert(testLogicalAnd(25) === "Yes");
- text: <code>testLogicalAnd(30)</code> should return "Yes"
testString: assert(testLogicalAnd(30) === "Yes");
- text: <code>testLogicalAnd(50)</code> should return "Yes"
testString: assert(testLogicalAnd(50) === "Yes");
- text: <code>testLogicalAnd(51)</code> should return "No"
testString: assert(testLogicalAnd(51) === "No");
- text: <code>testLogicalAnd(75)</code> should return "No"
testString: assert(testLogicalAnd(75) === "No");
- text: <code>testLogicalAnd(80)</code> should return "No"
testString: assert(testLogicalAnd(80) === "No");
```
@@ -68,14 +73,18 @@ testLogicalAnd(10);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testLogicalAnd(val) {
if (val >= 25 && val <= 50) {
return "Yes";
}
return "No";
}
```
</section>

View File

@@ -2,41 +2,46 @@
id: 56533eb9ac21ba0edf2244d9
title: Comparisons with the Logical Or Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cEPrGTN
forumTopicId: 16800
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>
<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>
<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"");'
- text: You should use the <code>||</code> operator once
testString: assert(code.match(/\|\|/g).length === 1);
- text: You should only have one <code>if</code> statement
testString: assert(code.match(/if/g).length === 1);
- text: <code>testLogicalOr(0)</code> should return "Outside"
testString: assert(testLogicalOr(0) === "Outside");
- text: <code>testLogicalOr(9)</code> should return "Outside"
testString: assert(testLogicalOr(9) === "Outside");
- text: <code>testLogicalOr(10)</code> should return "Inside"
testString: assert(testLogicalOr(10) === "Inside");
- text: <code>testLogicalOr(15)</code> should return "Inside"
testString: assert(testLogicalOr(15) === "Inside");
- text: <code>testLogicalOr(19)</code> should return "Inside"
testString: assert(testLogicalOr(19) === "Inside");
- text: <code>testLogicalOr(20)</code> should return "Inside"
testString: assert(testLogicalOr(20) === "Inside");
- text: <code>testLogicalOr(21)</code> should return "Outside"
testString: assert(testLogicalOr(21) === "Outside");
- text: <code>testLogicalOr(25)</code> should return "Outside"
testString: assert(testLogicalOr(25) === "Outside");
```
@@ -70,14 +75,18 @@ testLogicalOr(15);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testLogicalOr(val) {
if (val < 10 || val > 20) {
return "Outside";
}
return "Inside";
}
```
</section>

View File

@@ -2,31 +2,36 @@
id: 56533eb9ac21ba0edf2244af
title: Compound Assignment With Augmented Addition
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cDR6LCb
forumTopicId: 16661
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>
<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>
<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");'
- text: <code>a</code> should equal <code>15</code>
testString: assert(a === 15);
- text: <code>b</code> should equal <code>26</code>
testString: assert(b === 26);
- text: <code>c</code> should equal <code>19</code>
testString: assert(c === 19);
- text: You should use the <code>+=</code> operator for each variable
testString: assert(code.match(/\+=/g).length === 3);
- text: Do not modify the code above the line
testString: assert(/var a = 3;/.test(code) && /var b = 17;/.test(code) && /var c = 12;/.test(code));
```
@@ -52,12 +57,12 @@ c = c + 7;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(a,b,c){ return "a = " + a + ", b = " + b + ", c = " + c; })(a,b,c);
```
</div>
@@ -68,6 +73,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var a = 3;
var b = 17;
var c = 12;
a += 12;
b += 9;
c += 7;
```
</section>

View File

@@ -2,31 +2,36 @@
id: 56533eb9ac21ba0edf2244b2
title: Compound Assignment With Augmented Division
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c2QvKT2
forumTopicId: 16659
localeTitle: Соединение с расширенным делением
---
## Description
<section id="description"> Оператор <code>/=</code> делит переменную на другое число. <code>myVar = myVar / 5;</code> <code>myVar</code> на <code>5</code> . Это можно переписать как: <code>myVar /= 5;</code> </section>
<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>
<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");'
- text: <code>a</code> should equal <code>4</code>
testString: assert(a === 4);
- text: <code>b</code> should equal <code>27</code>
testString: assert(b === 27);
- text: <code>c</code> should equal <code>3</code>
testString: assert(c === 3);
- text: You should use the <code>/=</code> operator for each variable
testString: assert(code.match(/\/=/g).length === 3);
- text: Do not modify the code above the line
testString: assert(/var a = 48;/.test(code) && /var b = 108;/.test(code) && /var c = 33;/.test(code));
```
@@ -52,12 +57,12 @@ c = c / 11;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(a,b,c){ return "a = " + a + ", b = " + b + ", c = " + c; })(a,b,c);
```
</div>
@@ -68,6 +73,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var a = 48;
var b = 108;
var c = 33;
a /= 12;
b /= 4;
c /= 11;
```
</section>

View File

@@ -2,31 +2,36 @@
id: 56533eb9ac21ba0edf2244b1
title: Compound Assignment With Augmented Multiplication
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c83vrfa
forumTopicId: 16662
localeTitle: Соединение с расширенным умножением
---
## Description
<section id="description"> Оператор <code>*=</code> умножает переменную на число. <code>myVar = myVar * 5;</code> умножит <code>myVar</code> на <code>5</code> . Это можно переписать как: <code>myVar *= 5;</code> </section>
<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>
<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");'
- text: <code>a</code> should equal <code>25</code>
testString: assert(a === 25);
- text: <code>b</code> should equal <code>36</code>
testString: assert(b === 36);
- text: <code>c</code> should equal <code>46</code>
testString: assert(c === 46);
- text: You should use the <code>*=</code> operator for each variable
testString: assert(code.match(/\*=/g).length === 3);
- text: Do not modify the code above the line
testString: assert(/var a = 5;/.test(code) && /var b = 12;/.test(code) && /var c = 4\.6;/.test(code));
```
@@ -52,12 +57,12 @@ c = c * 10;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(a,b,c){ return "a = " + a + ", b = " + b + ", c = " + c; })(a,b,c);
```
</div>
@@ -68,6 +73,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var a = 5;
var b = 12;
var c = 4.6;
a *= 5;
b *= 3;
c *= 10;
```
</section>

View File

@@ -2,31 +2,36 @@
id: 56533eb9ac21ba0edf2244b0
title: Compound Assignment With Augmented Subtraction
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c2Qv7AV
forumTopicId: 16660
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>
<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>
<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");'
- text: <code>a</code> should equal <code>5</code>
testString: assert(a === 5);
- text: <code>b</code> should equal <code>-6</code>
testString: assert(b === -6);
- text: <code>c</code> should equal <code>2</code>
testString: assert(c === 2);
- text: You should use the <code>-=</code> operator for each variable
testString: assert(code.match(/-=/g).length === 3);
- text: Do not modify the code above the line
testString: assert(/var a = 11;/.test(code) && /var b = 9;/.test(code) && /var c = 3;/.test(code));
```
@@ -52,12 +57,12 @@ c = c - 1;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(a,b,c){ return "a = " + a + ", b = " + b + ", c = " + c; })(a,b,c);
```
</div>
@@ -68,6 +73,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var a = 11;
var b = 9;
var c = 3;
a -= 6;
b -= 15;
c -= 1;
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244b7
title: Concatenating Strings with Plus Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cNpM8AN
forumTopicId: 16802
localeTitle: Конкатенация строк с помощью оператора Plus
---
## Description
<section id="description"> В JavaScript, когда оператор <code>+</code> используется со значением <code>String</code> , он называется оператором <dfn>конкатенации</dfn> . Вы можете создать новую строку из других строк путем <dfn>конкатенации</dfn> их вместе. <strong>пример</strong> <blockquote> «Меня зовут Алан, +, я конкатенирую». </blockquote> <strong>Заметка</strong> <br> Следите за пробелами. Конкатенация не добавляет пробелов между конкатенированными строками, поэтому вам нужно будет добавить их самостоятельно. </section>
<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>
<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.");'
- text: <code>myStr</code> should have a value of <code>This is the start. This is the end.</code>
testString: assert(myStr === "This is the start. This is the end.");
- text: Use the <code>+</code> operator to build <code>myStr</code>
testString: assert(code.match(/(["']).*(["'])\s*\+\s*(["']).*(["'])/g).length > 1);
- text: <code>myStr</code> should be created using the <code>var</code> keyword.
testString: assert(/var\s+myStr/.test(code));
- text: Make sure to assign the result to the <code>myStr</code> variable.
testString: assert(/myStr\s*=/.test(code));
```
@@ -47,12 +52,18 @@ var myStr;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){
if(typeof myStr === 'string') {
return 'myStr = "' + myStr + '"';
} else {
return 'myStr is not a string';
}
})();
```
</div>
@@ -63,6 +74,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var ourStr = "I come first. " + "I come second.";
var myStr = "This is the start. " + "This is the end.";
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244b8
title: Concatenating Strings with the Plus Equals Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cbQmmC4
forumTopicId: 16803
localeTitle: Объединение строк с помощью оператора Plus Equals
---
## Description
<section id="description"> Мы также можем использовать оператор <code>+=</code> для <dfn>конкатенации</dfn> строки в конец существующей строковой переменной. Это может быть очень полезно для разбиения длинной строки на несколько строк. <strong>Заметка</strong> <br> Следите за пробелами. Конкатенация не добавляет пробелов между конкатенированными строками, поэтому вам нужно будет добавить их самостоятельно. </section>
<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>
<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>");'
- text: <code>myStr</code> should have a value of <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.");
- text: Use the <code>+=</code> operator to build <code>myStr</code>
testString: assert(code.match(/\w\s*\+=\s*["']/g).length > 1 && code.match(/\w\s*\=\s*["']/g).length > 1);
```
@@ -44,12 +49,18 @@ var myStr;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){
if(typeof myStr === 'string') {
return 'myStr = "' + myStr + '"';
} else {
return 'myStr is not a string';
}
})();
```
</div>
@@ -60,6 +71,11 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var ourStr = "I come first. ";
ourStr += "I come second.";
var myStr = "This is the first sentence. ";
myStr += "This is the second sentence.";
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244b9
title: Constructing Strings with Variables
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cqk8rf4
forumTopicId: 16805
localeTitle: Построение строк с переменными
---
## Description
<section id="description"> Иногда вам нужно будет создать строку, стиль <a href="https://en.wikipedia.org/wiki/Mad_Libs" target="_blank">Mad Libs</a> . Используя оператор конкатенации ( <code>+</code> ), вы можете вставить одну или несколько переменных в строку, которую вы строите. </section>
<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>
<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");'
- text: <code>myName</code> should be set to a string at least 3 characters long
testString: assert(typeof myName !== 'undefined' && myName.length > 2);
- text: Use two <code>+</code> operators to build <code>myStr</code> with <code>myName</code> inside it
testString: assert(code.match(/["']\s*\+\s*myName\s*\+\s*["']/g).length > 0);
```
@@ -44,12 +49,25 @@ var myStr;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){
var output = [];
if(typeof myName === 'string') {
output.push('myName = "' + myName + '"');
} else {
output.push('myName is not a string');
}
if(typeof myStr === 'string') {
output.push('myStr = "' + myStr + '"');
} else {
output.push('myStr is not a string');
}
return output.join('\n');
})();
```
</div>
@@ -60,6 +78,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myName = "Bob";
var myStr = "My name is " + myName + " and I am well!";
```
</section>

View File

@@ -2,27 +2,32 @@
id: 56105e7b514f539506016a5e
title: Count Backwards With a For Loop
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c2R6BHa
forumTopicId: 16808
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>
<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>
<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>.");'
- text: You should be using a <code>for</code> loop for this.
testString: assert(code.match(/for\s*\(/g).length > 1);
- text: You should be using the array method <code>push</code>.
testString: assert(code.match(/myArray.push/));
- text: <code>myArray</code> should equal <code>[9,7,5,3,1]</code>.
testString: assert.deepEqual(myArray, [9,7,5,3,1]);
```
@@ -50,12 +55,12 @@ var myArray = [];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
```
</div>
@@ -66,6 +71,14 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var ourArray = [];
for (var i = 10; i > 0; i -= 2) {
ourArray.push(i);
}
var myArray = [];
for (var i = 9; i > 0; i -= 2) {
myArray.push(i);
}
```
</section>

View File

@@ -2,15 +2,19 @@
id: 565bbe00e9cc8ac0725390f4
title: Counting Cards
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c6KE7ty
forumTopicId: 16809
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>
<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 id='instructions'>
</section>
## Tests
@@ -18,20 +22,20 @@ localeTitle: Считаем карты
```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>");'
- text: Cards Sequence 2, 3, 4, 5, 6 should return <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; })());
- text: Cards Sequence 7, 8, 9 should return <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; })());
- text: Cards Sequence 10, J, Q, K, A should return <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; })());
- text: Cards Sequence 3, 7, Q, 8, A should return <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; })());
- text: Cards Sequence 2, J, 9, 2, 7 should return <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; })());
- text: Cards Sequence 2, 2, 10 should return <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; })());
- text: Cards Sequence 3, 2, A, 10, K should return <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; })());
```
@@ -61,14 +65,35 @@ cc(2); cc(3); cc(7); cc('K'); cc('A');
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
var count = 0;
function cc(card) {
switch(card) {
case 2:
case 3:
case 4:
case 5:
case 6:
count++;
break;
case 10:
case 'J':
case 'Q':
case 'K':
case 'A':
count--;
}
if(count > 0) {
return count + " Bet";
} else {
return count + " Hold";
}
}
```
</section>

View File

@@ -2,25 +2,30 @@
id: cf1391c1c11feddfaeb4bdef
title: Create Decimal Numbers with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/ca8GEuW
forumTopicId: 16826
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>
<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>
<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"); '
- text: <code>myDecimal</code> should be a number.
testString: assert(typeof myDecimal === "number");
- text: <code>myDecimal</code> should have a decimal point
testString: assert(myDecimal % 1 != 0);
```
@@ -40,12 +45,12 @@ var ourDecimal = 5.7;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){if(typeof myDecimal !== "undefined"){return myDecimal;}})();
```
</div>
@@ -56,6 +61,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myDecimal = 9.9;
```
</section>

View File

@@ -2,23 +2,28 @@
id: bd7123c9c443eddfaeb5bdef
title: Declare JavaScript Variables
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cNanrHq
forumTopicId: 17556
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> аналогичны переменным 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>
<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> аналогичны переменным 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>
<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");'
- text: You should declare <code>myName</code> with the <code>var</code> keyword, ending with a semicolon
testString: assert(/var\s+myName\s*;/.test(code));
```
@@ -39,12 +44,12 @@ var ourName;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myName !== "undefined"){(function(v){return v;})(myName);}
```
</div>
@@ -55,6 +60,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myName;
```
</section>

View File

@@ -2,25 +2,30 @@
id: bd7123c9c444eddfaeb5bdef
title: Declare String Variables
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c2QvWU6
forumTopicId: 17557
localeTitle: Объявлять строковые переменные
---
## Description
<section id="description"> Раньше мы использовали код <code>var myName = &quot;your name&quot;;</code> <code>&quot;your name&quot;</code> называется <dfn>строковым</dfn> <dfn>литералом</dfn> . Это строка, потому что это серия из нуля или более символов, заключенных в одинарные или двойные кавычки. </section>
<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>
<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.");'
- text: <code>myFirstName</code> should be a string with at least one character in it.
testString: assert((function(){if(typeof myFirstName !== "undefined" && typeof myFirstName === "string" && myFirstName.length > 0){return true;}else{return false;}})());
- text: <code>myLastName</code> should be a string with at least one character in it.
testString: assert((function(){if(typeof myLastName !== "undefined" && typeof myLastName === "string" && myLastName.length > 0){return true;}else{return false;}})());
```
@@ -42,12 +47,12 @@ var lastName = "Turing";
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myFirstName !== "undefined" && typeof myLastName !== "undefined"){(function(){return myFirstName + ', ' + myLastName;})();}
```
</div>
@@ -58,6 +63,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myFirstName = "Alan";
var myLastName = "Turing";
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244ad
title: Decrement a Number with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cM2KeS2
forumTopicId: 17558
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>
<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>
<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");'
- text: <code>myVar</code> should equal <code>10</code>
testString: assert(myVar === 10);
- text: <code>myVar = myVar - 1;</code> should be changed
testString: assert(/var\s*myVar\s*=\s*11;\s*\/*.*\s*([-]{2}\s*myVar|myVar\s*[-]{2});/.test(code));
- text: Use the <code>--</code> operator on <code>myVar</code>
testString: assert(/[-]{2}\s*myVar|myVar\s*[-]{2}/.test(code));
- text: Do not change code above the line
testString: assert(/var myVar = 11;/.test(code));
```
@@ -45,12 +50,12 @@ myVar = myVar - 1;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return 'myVar = ' + z;})(myVar);
```
</div>
@@ -61,6 +66,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myVar = 11;
myVar--;
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56bbb991ad1ed5201cd392d3
title: Delete Properties from a JavaScript Object
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cDqKdTv
forumTopicId: 17560
localeTitle: Удаление свойств из объекта JavaScript
---
## Description
<section id="description"> Мы также можем удалить свойства из таких объектов: <code>delete ourDog.bark;</code> </section>
<section id='description'>
Мы также можем удалить свойства из таких объектов: <code>delete ourDog.bark;</code>
</section>
## Instructions
<section id="instructions"> Удалите свойство <code>&quot;tails&quot;</code> из <code>myDog</code> . Вы можете использовать либо точечную, либо скобку. </section>
<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");'
- text: Delete the property <code>"tails"</code> from <code>myDog</code>.
testString: assert(typeof myDog === "object" && myDog.tails === undefined);
- text: Do not modify the <code>myDog</code> setup
testString: 'assert(code.match(/"tails": 1/g).length > 1);'
```
@@ -58,12 +63,12 @@ var myDog = {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return z;})(myDog);
```
</div>
@@ -74,6 +79,21 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"],
"bark": "bow-wow"
};
var myDog = {
"name": "Happy Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"],
"bark": "woof"
};
delete myDog.tails;
```
</section>

View File

@@ -2,27 +2,32 @@
id: bd7993c9ca9feddfaeb7bdef
title: Divide One Decimal by Another with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cBZe9AW
forumTopicId: 18255
localeTitle: Разделить одно десятичное на другое с помощью JavaScript
---
## Description
<section id="description"> Теперь давайте разделим одно десятичное на другое. </section>
<section id='description'>
Теперь давайте разделим одно десятичное на другое.
</section>
## Instructions
<section id="instructions"> Измените <code>0.0</code> так, чтобы <code>quotient</code> равен <code>2.2</code> . </section>
<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");'
- text: The variable <code>quotient</code> should equal <code>2.2</code>
testString: assert(quotient === 2.2);
- text: You should use the <code>/</code> operator to divide 4.4 by 2
testString: assert(/4\.40*\s*\/\s*2\.*0*/.test(code));
- text: The quotient variable should only be assigned once
testString: assert(code.match(/quotient/g).length === 1);
```
@@ -40,12 +45,12 @@ var quotient = 0.0 / 2.0; // Fix this line
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(y){return 'quotient = '+y;})(quotient);
```
</div>
@@ -56,6 +61,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var quotient = 4.4 / 2.0;
```
</section>

View File

@@ -2,25 +2,30 @@
id: cf1111c1c11feddfaeb6bdef
title: Divide One Number by Another with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cqkbdAr
forumTopicId: 17566
localeTitle: Разделите одно число другим с помощью JavaScript
---
## Description
<section id="description"> Мы также можем разделить одно число на другое. JavaScript использует символ <code>/</code> для деления. <p> <strong>пример</strong> </p><blockquote> myVar = 16/2; // присвоено 8 </blockquote></section>
<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>
<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");'
- text: Make the variable <code>quotient</code> equal to 2.
testString: assert(quotient === 2);
- text: Use the <code>/</code> operator
testString: assert(/\d+\s*\/\s*\d+/.test(code));
```
@@ -38,12 +43,12 @@ var quotient = 66 / 0;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return 'quotient = '+z;})(quotient);
```
</div>
@@ -54,6 +59,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var quotient = 66 / 33;
```
</section>

View File

@@ -2,33 +2,40 @@
id: 56533eb9ac21ba0edf2244b6
title: Escape Sequences in Strings
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cvmqRh6
forumTopicId: 17567
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>
<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>
<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>");'
- text: <code>myStr</code> should not contain any spaces
testString: assert(!/ /.test(myStr));
- text: <code>myStr</code> should contain the strings <code>FirstLine</code>, <code>SecondLine</code> and <code>ThirdLine</code> (remember case sensitivity)
testString: assert(/FirstLine/.test(myStr) && /SecondLine/.test(myStr) && /ThirdLine/.test(myStr));
- text: <code>FirstLine</code> should be followed by the newline character <code>\n</code>
testString: assert(/FirstLine\n/.test(myStr));
- text: <code>myStr</code> should contain a tab character <code>\t</code> which follows a newline character
testString: assert(/\n\t/.test(myStr));
- text: <code>SecondLine</code> should be preceded by the backslash character <code>\</code>
testString: assert(/\\SecondLine/.test(myStr));
- text: There should be a newline character between <code>SecondLine</code> and <code>ThirdLine</code>
testString: assert(/SecondLine\nThirdLine/.test(myStr));
- text: <code>myStr</code> should only contain characters shown in the instructions
testString: assert(myStr === 'FirstLine\n\t\\SecondLine\nThirdLine');
```
@@ -46,12 +53,14 @@ var myStr; // Change this line
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){
if (myStr !== undefined){
console.log('myStr:\n' + myStr);}})();
```
</div>
@@ -62,6 +71,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myStr = "FirstLine\n\t\\SecondLine\nThirdLine";
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244b5
title: Escaping Literal Quotes in Strings
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c2QvgSr
forumTopicId: 17568
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>
<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>
<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>");'
- text: You should use two double quotes (<code>&quot;</code>) and four escaped double quotes (<code>&#92;&quot;</code>).
testString: assert(code.match(/\\"/g).length === 4 && code.match(/[^\\]"/g).length === 2);
- text: 'Variable myStr should contain the string: <code>I am a "double quoted" string inside "double quotes".</code>'
testString: assert(myStr === "I am a \"double quoted\" string inside \"double quotes\".");
```
@@ -38,12 +43,18 @@ var myStr = ""; // Change this line
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){
if(typeof myStr === 'string') {
console.log("myStr = \"" + myStr + "\"");
} else {
console.log("myStr is undefined");
}
})();
```
</div>
@@ -54,6 +65,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myStr = "I am a \"double quoted\" string inside \"double quotes\".";
```
</section>

View File

@@ -2,25 +2,32 @@
id: bd7123c9c448eddfaeb5bdef
title: Find the Length of a String
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cvmqEAd
forumTopicId: 18182
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>
<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>
<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>.");'
- text: You should not change the variable declarations in the <code>// Setup</code> section.
testString: assert(code.match(/var lastNameLength = 0;/) && code.match(/var lastName = "Lovelace";/));
- text: <code>lastNameLength</code> should be equal to eight.
testString: assert(typeof lastNameLength !== 'undefined' && lastNameLength === 8);
- text: 'You should be getting the length of <code>lastName</code> by using <code>.length</code> like this: <code>lastName.length</code>.'
testString: assert(code.match(/=\s*lastName\.length/g) && !code.match(/lastName\s*=\s*8/));
```
@@ -50,22 +57,19 @@ lastNameLength = lastName;
</div>
### After Test
<div id='js-teardown'>
```js
console.info('after the test');
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
var firstNameLength = 0;
var firstName = "Ada";
firstNameLength = firstName.length;
var lastNameLength = 0;
var lastName = "Lovelace";
lastNameLength = lastName.length;
```
</section>

View File

@@ -2,27 +2,32 @@
id: 56533eb9ac21ba0edf2244ae
title: Finding a Remainder in JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cWP24Ub
forumTopicId: 18184
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>
<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>
<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");'
- text: The variable <code>remainder</code> should be initialized
testString: assert(/var\s+?remainder/.test(code));
- text: The value of <code>remainder</code> should be <code>2</code>
testString: assert(remainder === 2);
- text: You should use the <code>%</code> operator
testString: assert(/\s+?remainder\s*?=\s*?.*%.*;/.test(code));
```
@@ -42,12 +47,12 @@ var remainder;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(y){return 'remainder = '+y;})(remainder);
```
</div>
@@ -58,6 +63,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var remainder = 11 % 3;
```
</section>

View File

@@ -2,27 +2,32 @@
id: cf1111c1c11feddfaeb9bdef
title: Generate Random Fractions with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cyWJJs3
forumTopicId: 18185
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="learn/javascript-algorithms-and-data-structures/basic-javascript/storing-values-with-the-assignment-operator" target="_blank">сохранению значений с помощью Equal Operator</a> , все вызовы функций будут разрешены до выполнения <code>return</code> , поэтому мы можем <code>return</code> значение функции <code>Math.random()</code> . </section>
<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="learn/javascript-algorithms-and-data-structures/basic-javascript/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>
<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.");'
- text: <code>randomFraction</code> should return a random number.
testString: assert(typeof randomFraction() === "number");
- text: The number returned by <code>randomFraction</code> should be a decimal.
testString: assert((randomFraction()+''). match(/\./g));
- text: You should be using <code>Math.random</code> to generate the random decimal number.
testString: assert(code.match(/Math\.random/g).length >= 0);
```
@@ -47,12 +52,12 @@ function randomFraction() {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){return randomFraction();})();
```
</div>
@@ -63,6 +68,9 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
function randomFraction() {
return Math.random();
}
```
</section>

View File

@@ -2,29 +2,34 @@
id: cf1111c1c12feddfaeb1bdef
title: Generate Random Whole Numbers with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cRn6bfr
forumTopicId: 18186
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>
<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>
<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.");'
- text: The result of <code>randomWholeNum</code> should be a whole number.
testString: assert(typeof randomWholeNum() === "number" && (function(){var r = randomWholeNum();return Math.floor(r) === r;})());
- text: You should be using <code>Math.random</code> to generate a random number.
testString: assert(code.match(/Math.random/g).length > 1);
- text: You should have multiplied the result of <code>Math.random</code> by 10 to make it a number that is between zero and nine.
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));
- text: You should use <code>Math.floor</code> to remove the decimal part of the number.
testString: assert(code.match(/Math.floor/g).length > 1);
```
@@ -49,12 +54,12 @@ function randomWholeNum() {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){return randomWholeNum();})();
```
</div>
@@ -65,6 +70,10 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var randomNumberBetween0and19 = Math.floor(Math.random() * 20);
function randomWholeNum() {
return Math.floor(Math.random() * 10);
}
```
</section>

View File

@@ -2,29 +2,34 @@
id: cf1111c1c12feddfaeb2bdef
title: Generate Random Whole Numbers within a Range
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cm83yu6
forumTopicId: 18187
localeTitle: Генерировать случайные целые числа в пределах диапазона
---
## Description
<section id="description"> Вместо того, чтобы генерировать случайное число между нулем и заданным числом, как это было раньше, мы можем сгенерировать случайное число, которое попадает в диапазон двух конкретных чисел. Для этого определим минимальное число <code>min</code> и максимальное число <code>max</code> . Вот формула, которую мы будем использовать. Найдите минутку, чтобы прочитать ее и попытайтесь понять, что делает этот код: <code>Math.floor(Math.random() * (max - min + 1)) + min</code> </section>
<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>
<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.");'
- text: The lowest random number that can be generated by <code>randomRange</code> should be equal to your minimum number, <code>myMin</code>.
testString: assert(calcMin === 5);
- text: The highest random number that can be generated by <code>randomRange</code> should be equal to your maximum number, <code>myMax</code>.
testString: assert(calcMax === 15);
- text: The random number generated by <code>randomRange</code> should be an integer, not a decimal.
testString: assert(randomRange(0,1) % 1 === 0 );
- text: <code>randomRange</code> should use both <code>myMax</code> and <code>myMin</code>, and return a random number in your range.
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;}})());
```
@@ -59,12 +64,25 @@ var myRandom = randomRange(5, 15);
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
var calcMin = 100;
var calcMax = -100;
for(var i = 0; i < 100; i++) {
var result = randomRange(5,15);
calcMin = Math.min(calcMin, result);
calcMax = Math.max(calcMax, result);
}
(function(){
if(typeof myRandom === 'number') {
return "myRandom = " + myRandom;
} else {
return "myRandom undefined";
}
})()
```
</div>
@@ -75,6 +93,9 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
function randomRange(myMin, myMax) {
return Math.floor(Math.random() * (myMax - myMin + 1)) + myMin;
}
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244be
title: Global Scope and Functions
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cQM7mCN
forumTopicId: 18193
localeTitle: Глобальная область и функции
---
## Description
<section id="description"> В JavaScript <dfn>область видимости</dfn> относится к видимости переменных. Переменные, определенные вне функционального блока, имеют <dfn>глобальную</dfn> область. Это означает, что их можно увидеть везде в вашем JavaScript-коде. Переменные, которые используются без ключевого слова <code>var</code> , автоматически создаются в <code>global</code> области. Это может привести к непредвиденным последствиям в другом месте вашего кода или при повторном запуске функции. Вы всегда должны объявлять переменные с помощью <code>var</code> . </section>
<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>
<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>");'
- text: <code>myGlobal</code> should be defined
testString: assert(typeof myGlobal != "undefined");
- text: <code>myGlobal</code> should have a value of <code>10</code>
testString: assert(myGlobal === 10);
- text: <code>myGlobal</code> should be declared using the <code>var</code> keyword
testString: assert(/var\s+myGlobal/.test(code));
- text: <code>oopsGlobal</code> should be a global variable and have a value of <code>5</code>
testString: assert(typeof oopsGlobal != "undefined" && oopsGlobal === 5);
```
@@ -60,7 +65,7 @@ function fun2() {
</div>
### Before Test
### Before Tests
<div id='js-setup'>
```js
@@ -89,11 +94,15 @@ capture();
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
fun1();
fun2();
uncapture();
(function() { return logOutput || "console.log never called"; })();
```
</div>
@@ -104,6 +113,25 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
// Declare your variable here
var myGlobal = 10;
function fun1() {
// Assign 5 to oopsGlobal Here
oopsGlobal = 5;
}
// 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);
}
```
</section>

View File

@@ -2,27 +2,32 @@
id: 56533eb9ac21ba0edf2244c0
title: Global vs. Local Scope in Functions
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c2QwKH2
forumTopicId: 18194
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>
<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>
<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");'
- text: Do not change the value of the global <code>outerWear</code>
testString: assert(outerWear === "T-Shirt");
- text: <code>myOutfit</code> should return <code>"sweater"</code>
testString: assert(myOutfit() === "sweater");
- text: Do not change the return statement
testString: assert(/return outerWear/.test(code));
```
@@ -52,14 +57,17 @@ myOutfit();
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
var outerWear = "T-Shirt";
function myOutfit() {
var outerWear = "sweater";
return outerWear;
}
```
</section>

View File

@@ -2,15 +2,19 @@
id: 5664820f61c48e80c9fa476c
title: Golf Code
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c9ykNUR
forumTopicId: 18195
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>
<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 id='instructions'>
</section>
## Tests
@@ -18,28 +22,28 @@ localeTitle: Гольф-код
```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!"");'
- text: <code>golfScore(4, 1)</code> should return "Hole-in-one!"
testString: assert(golfScore(4, 1) === "Hole-in-one!");
- text: <code>golfScore(4, 2)</code> should return "Eagle"
testString: assert(golfScore(4, 2) === "Eagle");
- text: <code>golfScore(5, 2)</code> should return "Eagle"
testString: assert(golfScore(5, 2) === "Eagle");
- text: <code>golfScore(4, 3)</code> should return "Birdie"
testString: assert(golfScore(4, 3) === "Birdie");
- text: <code>golfScore(4, 4)</code> should return "Par"
testString: assert(golfScore(4, 4) === "Par");
- text: <code>golfScore(1, 1)</code> should return "Hole-in-one!"
testString: assert(golfScore(1, 1) === "Hole-in-one!");
- text: <code>golfScore(5, 5)</code> should return "Par"
testString: assert(golfScore(5, 5) === "Par");
- text: <code>golfScore(4, 5)</code> should return "Bogey"
testString: assert(golfScore(4, 5) === "Bogey");
- text: <code>golfScore(4, 6)</code> should return "Double Bogey"
testString: assert(golfScore(4, 6) === "Double Bogey");
- text: <code>golfScore(4, 7)</code> should return "Go Home!"
testString: assert(golfScore(4, 7) === "Go Home!");
- text: <code>golfScore(5, 9)</code> should return "Go Home!"
testString: assert(golfScore(5, 9) === "Go Home!");
```
@@ -67,14 +71,39 @@ golfScore(5, 4);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function golfScore(par, strokes) {
if (strokes === 1) {
return "Hole-in-one!";
}
if (strokes <= par - 2) {
return "Eagle";
}
if (strokes === par - 1) {
return "Birdie";
}
if (strokes === par) {
return "Par";
}
if (strokes === par + 1) {
return "Bogey";
}
if(strokes === par + 2) {
return "Double Bogey";
}
return "Go Home!";
}
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244ac
title: Increment a Number with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/ca8GLT9
forumTopicId: 18201
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>
<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>
<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");'
- text: <code>myVar</code> should equal <code>88</code>
testString: assert(myVar === 88);
- text: <code>myVar = myVar + 1;</code> should be changed
testString: assert(/var\s*myVar\s*=\s*87;\s*\/*.*\s*([+]{2}\s*myVar|myVar\s*[+]{2});/.test(code));
- text: Use the <code>++</code> operator
testString: assert(/[+]{2}\s*myVar|myVar\s*[+]{2}/.test(code));
- text: Do not change code above the line
testString: assert(/var myVar = 87;/.test(code));
```
@@ -45,12 +50,12 @@ myVar = myVar + 1;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return 'myVar = ' + z;})(myVar);
```
</div>
@@ -61,6 +66,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myVar = 87;
myVar++;
```
</section>

View File

@@ -2,23 +2,28 @@
id: 56533eb9ac21ba0edf2244a9
title: Initializing Variables with the Assignment Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cWJ4Bfb
forumTopicId: 301171
localeTitle: Инициализация переменных с помощью оператора присваивания
---
## Description
<section id="description"> Хорошей практикой является объявление переменной вместе с инициализацией её начальным значением. Код <code>var myVar = 0;</code> создает новую переменную <code>myVar</code> и присваивает ей начальное значение <code>0</code> . </section>
<section id='description'>
Хорошей практикой является объявление переменной вместе с инициализацией её начальным значением. Код <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>
<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>");'
- text: Initialize <code>a</code> to a value of <code>9</code>
testString: assert(/var\s+a\s*=\s*9\s*/.test(code));
```
@@ -30,21 +35,21 @@ tests:
<div id='js-seed'>
```js
// Пример
// Example
var ourVar = 19;
// Изменяйте код ниже этой строки
// Only change code below this line
```
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
if(typeof a !== 'undefined') {(function(a){return "a = " + a;})(a);} else { (function() {return 'a is undefined';})(); }
```
</div>
@@ -57,4 +62,5 @@ if(typeof a !== 'undefined') {(function(a){return "a = " + a;})(a);} else { (fun
```js
var a = 9;
```
</section>

View File

@@ -2,37 +2,42 @@
id: 56533eb9ac21ba0edf2244db
title: Introducing Else If Statements
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/caeJ2hm
forumTopicId: 18206
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>
<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>
<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"");'
- text: You should have at least two <code>else</code> statements
testString: assert(code.match(/else/g).length > 1);
- text: You should have at least two <code>if</code> statements
testString: assert(code.match(/if/g).length > 1);
- text: You should have closing and opening curly braces for each <code>if else</code> code block.
testString: assert(code.match(/if\s*\((.+)\)\s*\{[\s\S]+\}\s*else if\s*\((.+)\)\s*\{[\s\S]+\}\s*else\s*\{[\s\S]+\s*\}/));
- text: <code>testElseIf(0)</code> should return "Smaller than 5"
testString: assert(testElseIf(0) === "Smaller than 5");
- text: <code>testElseIf(5)</code> should return "Between 5 and 10"
testString: assert(testElseIf(5) === "Between 5 and 10");
- text: <code>testElseIf(7)</code> should return "Between 5 and 10"
testString: assert(testElseIf(7) === "Between 5 and 10");
- text: <code>testElseIf(10)</code> should return "Between 5 and 10"
testString: assert(testElseIf(10) === "Between 5 and 10");
- text: <code>testElseIf(12)</code> should return "Greater than 10"
testString: assert(testElseIf(12) === "Greater than 10");
```
@@ -63,14 +68,21 @@ testElseIf(7);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testElseIf(val) {
if(val > 10) {
return "Greater than 10";
} else if(val < 5) {
return "Smaller than 5";
} else {
return "Between 5 and 10";
}
}
```
</section>

View File

@@ -2,35 +2,40 @@
id: 56533eb9ac21ba0edf2244da
title: Introducing Else Statements
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cek4Efq
forumTopicId: 18207
localeTitle: Введение в новые заявления
---
## Description
<section id="description"> Когда условие для оператора <code>if</code> истинно, выполняется блок кода после него. Как насчет того, когда это условие ложно? Обычно ничего не происходило. С помощью инструкции <code>else</code> может выполняться альтернативный блок кода. <blockquote> если (num&gt; 10) { <br> возвращение «Больше, чем 10»; <br> } else { <br> вернуть «10 или меньше»; <br> } </blockquote></section>
<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>
<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.");'
- text: You should only have one <code>if</code> statement in the editor
testString: assert(code.match(/if/g).length === 1);
- text: You should use an <code>else</code> statement
testString: assert(/else/g.test(code));
- text: <code>testElse(4)</code> should return "5 or Smaller"
testString: assert(testElse(4) === "5 or Smaller");
- text: <code>testElse(5)</code> should return "5 or Smaller"
testString: assert(testElse(5) === "5 or Smaller");
- text: <code>testElse(6)</code> should return "Bigger than 5"
testString: assert(testElse(6) === "Bigger than 5");
- text: <code>testElse(10)</code> should return "Bigger than 5"
testString: assert(testElse(10) === "Bigger than 5");
- text: Do not change the code above or below the lines.
testString: assert(/var result = "";/.test(code) && /return result;/.test(code));
```
@@ -65,14 +70,21 @@ testElse(4);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function testElse(val) {
var result = "";
if(val > 5) {
result = "Bigger than 5";
} else {
result = "5 or Smaller";
}
return result;
}
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56104e9e514f539506016a5c
title: Iterate Odd Numbers With a For Loop
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cm8n7T9
forumTopicId: 18212
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>
<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>
<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>.");'
- text: You should be using a <code>for</code> loop for this.
testString: assert(code.match(/for\s*\(/g).length > 1);
- text: <code>myArray</code> should equal <code>[1,3,5,7,9]</code>.
testString: assert.deepEqual(myArray, [1,3,5,7,9]);
```
@@ -48,12 +53,12 @@ var myArray = [];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
```
</div>
@@ -64,6 +69,14 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var ourArray = [];
for (var i = 0; i < 10; i += 2) {
ourArray.push(i);
}
var myArray = [];
for (var i = 1; i < 10; i += 2) {
myArray.push(i);
}
```
</section>

View File

@@ -2,29 +2,34 @@
id: 5675e877dbd60be8ad28edc6
title: Iterate Through an Array with a For Loop
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/caeR3HB
forumTopicId: 18216
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>
<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>
<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");'
- text: <code>total</code> should be declared and initialized to 0
testString: assert(code.match(/(var|let|const)\s*?total\s*=\s*0.*?;?/));
- text: <code>total</code> should equal 20
testString: assert(total === 20);
- text: You should use a <code>for</code> loop to iterate through <code>myArr</code>
testString: assert(code.match(/for\s*\(/g).length > 1 && code.match(/myArr\s*\[/));
- text: Do not set <code>total</code> to 20 directly
testString: assert(!code.match(/total[\s\+\-]*=\s*(0(?!\s*[;,]?$)|[1-9])/gm));
```
@@ -53,12 +58,12 @@ var myArr = [ 2, 3, 4, 5, 6];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(){if(typeof total !== 'undefined') { return "total = " + total; } else { return "total is undefined";}})()
```
</div>
@@ -69,6 +74,19 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var ourArr = [ 9, 10, 11, 12];
var ourTotal = 0;
for (var i = 0; i < ourArr.length; i++) {
ourTotal += ourArr[i];
}
var myArr = [ 2, 3, 4, 5, 6];
var total = 0;
for (var i = 0; i < myArr.length; i++) {
total += myArr[i];
}
```
</section>

View File

@@ -2,27 +2,32 @@
id: 5a2efd662fb457916e1fe604
title: Iterate with JavaScript Do...While Loops
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cDqWGcp
forumTopicId: 301172
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>
<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>
<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>");'
- text: You should be using a <code>do...while</code> loop for this exercise.
testString: assert(code.match(/do/g));
- text: <code>myArray</code> should equal <code>[10]</code>.
testString: assert.deepEqual(myArray, [10]);
- text: <code>i</code> should equal <code>11</code>
testString: assert.equal(i, 11);
```
@@ -38,8 +43,7 @@ tests:
var myArray = [];
var i = 10;
// Only change code below this line.
// Only change code below this line
while (i < 5) {
myArray.push(i);
i++;
@@ -49,12 +53,12 @@ while (i < 5) {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
```
</div>
@@ -65,6 +69,12 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [];
var i = 10;
do {
myArray.push(i);
i++;
} while (i < 5)
```
</section>

View File

@@ -2,25 +2,30 @@
id: cf1111c1c11feddfaeb5bdef
title: Iterate with JavaScript For Loops
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c9yNVCe
forumTopicId: 18219
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>
<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>
<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>.");'
- text: You should be using a <code>for</code> loop for this.
testString: assert(code.match(/for\s*\(/g).length > 1);
- text: <code>myArray</code> should equal <code>[1,2,3,4,5]</code>.
testString: assert.deepEqual(myArray, [1,2,3,4,5]);
```
@@ -48,12 +53,12 @@ var myArray = [];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if (typeof myArray !== "undefined"){(function(){return myArray;})();}
```
</div>
@@ -64,6 +69,14 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var ourArray = [];
for (var i = 0; i < 5; i++) {
ourArray.push(i);
}
var myArray = [];
for (var i = 1; i < 6; i++) {
myArray.push(i);
}
```
</section>

View File

@@ -2,25 +2,30 @@
id: cf1111c1c11feddfaeb1bdef
title: Iterate with JavaScript While Loops
challengeType: 1
videoUrl: ''
localeTitle: 'Итерации с помощью JavaScript, в то время как циклы'
videoUrl: https://scrimba.com/c/c8QbnCM
forumTopicId: 18220
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>
<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>
<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>.");'
- text: You should be using a <code>while</code> loop for this.
testString: assert(code.match(/while/g));
- text: <code>myArray</code> should equal <code>[0,1,2,3,4]</code>.
testString: assert.deepEqual(myArray, [0,1,2,3,4]);
```
@@ -41,12 +46,12 @@ var myArray = [];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
```
</div>
@@ -57,6 +62,12 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [];
var i = 0;
while(i < 5) {
myArray.push(i);
i++;
}
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244bf
title: Local Scope and Functions
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cd62NhM
forumTopicId: 18227
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>
<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>
<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");'
- text: No global <code>myVar</code> variable
testString: assert(typeof myVar === 'undefined');
- text: Add a local <code>myVar</code> variable
testString: assert(/function\s+myLocalScope\s*\(\s*\)\s*\{\s[\s\S]+\s*var\s*myVar\s*(\s*|=[\s\S]+)\s*;[\s\S]+}/.test(code));
```
@@ -49,7 +54,7 @@ console.log(myVar);
</div>
### Before Test
### Before Tests
<div id='js-setup'>
```js
@@ -76,11 +81,13 @@ function uncapture() {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
typeof myLocalScope === 'function' && (capture(), myLocalScope(), uncapture());
(function() { return logOutput || "console.log never called"; })();
```
</div>
@@ -91,6 +98,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
function myLocalScope() {
'use strict';
var myVar;
console.log(myVar);
}
myLocalScope();
```
</section>

View File

@@ -2,27 +2,32 @@
id: 5690307fddb111c6084545d7
title: Logical Order in If Else Statements
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cwNvMUV
forumTopicId: 18228
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>
<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>
<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"");'
- text: <code>orderMyLogic(4)</code> should return "Less than 5"
testString: assert(orderMyLogic(4) === "Less than 5");
- text: <code>orderMyLogic(6)</code> should return "Less than 10"
testString: assert(orderMyLogic(6) === "Less than 10");
- text: <code>orderMyLogic(11)</code> should return "Greater than or equal to 10"
testString: assert(orderMyLogic(11) === "Greater than or equal to 10");
```
@@ -51,14 +56,21 @@ orderMyLogic(7);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function orderMyLogic(val) {
if(val < 5) {
return "Less than 5";
} else if (val < 10) {
return "Less than 10";
} else {
return "Greater than or equal to 10";
}
}
```
</section>

View File

@@ -2,27 +2,32 @@
id: 56bbb991ad1ed5201cd392cc
title: Manipulate Arrays With pop()
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cRbVZAB
forumTopicId: 18236
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>
<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>
<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>.");'
- text: <code>myArray</code> should only contain <code>[["John", 23]]</code>.
testString: assert((function(d){if(d[0][0] == 'John' && d[0][1] === 23 && d[1] == undefined){return true;}else{return false;}})(myArray));
- text: Use <code>pop()</code> on <code>myArray</code>
testString: assert(/removedFromMyArray\s*=\s*myArray\s*.\s*pop\s*(\s*)/.test(code));
- text: <code>removedFromMyArray</code> should only contain <code>["cat", 2]</code>.
testString: assert((function(d){if(d[0] == 'cat' && d[1] === 2 && d[2] == undefined){return true;}else{return false;}})(removedFromMyArray));
```
@@ -49,12 +54,12 @@ var removedFromMyArray;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(y, z){return 'myArray = ' + JSON.stringify(y) + ' & removedFromMyArray = ' + JSON.stringify(z);})(myArray, removedFromMyArray);
```
</div>
@@ -65,6 +70,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [["John", 23], ["cat", 2]];
var removedFromMyArray = myArray.pop();
```
</section>

View File

@@ -2,23 +2,28 @@
id: 56bbb991ad1ed5201cd392cb
title: Manipulate Arrays With push()
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cnqmVtJ
forumTopicId: 18237
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>
<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>
<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>.");'
- text: <code>myArray</code> should now equal <code>[["John", 23], ["cat", 2], ["dog", 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));
```
@@ -44,12 +49,12 @@ var myArray = [["John", 23], ["cat", 2]];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return 'myArray = ' + JSON.stringify(z);})(myArray);
```
</div>
@@ -60,6 +65,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [["John", 23], ["cat", 2]];
myArray.push(["dog",3]);
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56bbb991ad1ed5201cd392cd
title: Manipulate Arrays With shift()
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cRbVETW
forumTopicId: 18238
localeTitle: Манипулировать массивами со сдвигом ()
---
## Description
<section id="description"> <code>pop()</code> всегда удаляет последний элемент массива. Что делать, если вы хотите удалить первый? Вот где <code>.shift()</code> . Он работает так же, как <code>.pop()</code> , за исключением того, что он удаляет первый элемент вместо последнего. </section>
<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>
<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>.");'
- text: <code>myArray</code> should now equal <code>[["dog", 3]]</code>.
testString: assert((function(d){if(d[0][0] == 'dog' && d[0][1] === 3 && d[1] == undefined){return true;}else{return false;}})(myArray));
- text: <code>removedFromMyArray</code> should contain <code>["John", 23]</code>.
testString: assert((function(d){if(d[0] == 'John' && d[1] === 23 && typeof removedFromMyArray === 'object'){return true;}else{return false;}})(removedFromMyArray));
```
@@ -47,12 +52,12 @@ var removedFromMyArray;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(y, z){return 'myArray = ' + JSON.stringify(y) + ' & removedFromMyArray = ' + JSON.stringify(z);})(myArray, removedFromMyArray);
```
</div>
@@ -63,6 +68,10 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [["John", 23], ["dog", 3]];
// Only change code below this line.
var removedFromMyArray = myArray.shift();
```
</section>

View File

@@ -2,23 +2,28 @@
id: 56bbb991ad1ed5201cd392ce
title: Manipulate Arrays With unshift()
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/ckNDESv
forumTopicId: 18239
localeTitle: Манипулировать массивами С помощью функции unshift ()
---
## Description
<section id="description"> Вы не только можете <code>shift</code> элементы с начала массива, но также можете <code>unshift</code> элементы в начало массива, то есть добавить элементы перед массивом. <code>.unshift()</code> работает точно так же, как <code>.push()</code> , но вместо добавления элемента в конце массива <code>unshift()</code> добавляет элемент в начале массива. </section>
<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>
<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]].");'
- text: <code>myArray</code> should now have [["Paul", 35], ["dog", 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));
```
@@ -46,12 +51,12 @@ myArray.shift();
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(y, z){return 'myArray = ' + JSON.stringify(y);})(myArray);
```
</div>
@@ -62,6 +67,9 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [["John", 23], ["dog", 3]];
myArray.shift();
myArray.unshift(["Paul", 35]);
```
</section>

View File

@@ -2,39 +2,44 @@
id: 56533eb9ac21ba0edf2244cb
title: Manipulating Complex Objects
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c9yNMfR
forumTopicId: 18208
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>
<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>
<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");'
- text: <code>myMusic</code> should be an array
testString: assert(Array.isArray(myMusic));
- text: <code>myMusic</code> should have at least two elements
testString: assert(myMusic.length > 1);
- text: <code>myMusic[1]</code> should be an object
testString: assert(typeof myMusic[1] === 'object');
- text: <code>myMusic[1]</code> should have at least 4 properties
testString: assert(Object.keys(myMusic[1]).length > 3);
- text: <code>myMusic[1]</code> should contain an <code>artist</code> property which is a string
testString: assert(myMusic[1].hasOwnProperty('artist') && typeof myMusic[1].artist === 'string');
- text: <code>myMusic[1]</code> should contain a <code>title</code> property which is a string
testString: assert(myMusic[1].hasOwnProperty('title') && typeof myMusic[1].title === 'string');
- text: <code>myMusic[1]</code> should contain a <code>release_year</code> property which is a number
testString: assert(myMusic[1].hasOwnProperty('release_year') && typeof myMusic[1].release_year === 'number');
- text: <code>myMusic[1]</code> should contain a <code>formats</code> property which is an array
testString: assert(myMusic[1].hasOwnProperty('formats') && Array.isArray(myMusic[1].formats));
- text: <code>formats</code> should be an array of strings with at least two elements
testString: assert(myMusic[1].formats.every(function(item) { return (typeof item === "string")}) && myMusic[1].formats.length > 1);
```
@@ -65,12 +70,12 @@ var myMusic = [
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(x){ if (Array.isArray(x)) { return JSON.stringify(x); } return "myMusic is not an array"})(myMusic);
```
</div>
@@ -81,6 +86,29 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myMusic = [
{
"artist": "Billy Joel",
"title": "Piano Man",
"release_year": 1973,
"formats": [
"CS",
"8T",
"LP" ],
"gold": true
},
{
"artist": "ABBA",
"title": "Ring Ring",
"release_year": 1973,
"formats": [
"CS",
"8T",
"LP",
"CD",
]
}
];
```
</section>

View File

@@ -2,25 +2,30 @@
id: cf1111c1c11feddfaeb8bdef
title: Modify Array Data With Indexes
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/czQM4A8
forumTopicId: 18241
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>
<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>
<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>.");'
- text: <code>myArray</code> should now be [45,64,99].
testString: assert((function(){if(typeof myArray != 'undefined' && myArray[0] == 45 && myArray[1] == 64 && myArray[2] == 99){return true;}else{return false;}})());
- text: You should be using correct index to modify the value in <code>myArray</code>.
testString: assert((function(){if(code.match(/myArray\[0\]\s*=\s*/g)){return true;}else{return false;}})());
```
@@ -45,12 +50,12 @@ var myArray = [18,64,99];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
```
</div>
@@ -61,6 +66,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [18,64,99];
myArray[0] = 45;
```
</section>

View File

@@ -2,43 +2,48 @@
id: 56533eb9ac21ba0edf2244df
title: Multiple Identical Options in Switch Statements
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cdBKWCV
forumTopicId: 18242
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>
<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>
<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");'
- text: <code>sequentialSizes(1)</code> should return "Low"
testString: assert(sequentialSizes(1) === "Low");
- text: <code>sequentialSizes(2)</code> should return "Low"
testString: assert(sequentialSizes(2) === "Low");
- text: <code>sequentialSizes(3)</code> should return "Low"
testString: assert(sequentialSizes(3) === "Low");
- text: <code>sequentialSizes(4)</code> should return "Mid"
testString: assert(sequentialSizes(4) === "Mid");
- text: <code>sequentialSizes(5)</code> should return "Mid"
testString: assert(sequentialSizes(5) === "Mid");
- text: <code>sequentialSizes(6)</code> should return "Mid"
testString: assert(sequentialSizes(6) === "Mid");
- text: <code>sequentialSizes(7)</code> should return "High"
testString: assert(sequentialSizes(7) === "High");
- text: <code>sequentialSizes(8)</code> should return "High"
testString: assert(sequentialSizes(8) === "High");
- text: <code>sequentialSizes(9)</code> should return "High"
testString: assert(sequentialSizes(9) === "High");
- text: You should not use any <code>if</code> or <code>else</code> statements
testString: assert(!/else/g.test(code) || !/if/g.test(code));
- text: You should have nine <code>case</code> statements
testString: assert(code.match(/case/g).length === 9);
```
@@ -67,14 +72,34 @@ sequentialSizes(1);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function sequentialSizes(val) {
var answer = "";
switch(val) {
case 1:
case 2:
case 3:
answer = "Low";
break;
case 4:
case 5:
case 6:
answer = "Mid";
break;
case 7:
case 8:
case 9:
answer = "High";
}
return answer;
}
```
</section>

View File

@@ -2,25 +2,30 @@
id: bd7993c9c69feddfaeb7bdef
title: Multiply Two Decimals with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/ce2GeHq
forumTopicId: 301173
localeTitle: Умножить два десятичных знака с помощью JavaScript
---
## Description
<section id="description"> В JavaScript вы также можете выполнять вычисления с десятичными числами, как и целые числа. Давайте умножим два десятичных знака вместе, чтобы получить их продукт. </section>
<section id='description'>
В JavaScript вы также можете выполнять вычисления с десятичными числами, как и целые числа. Давайте умножим два десятичных знака вместе, чтобы получить их продукт.
</section>
## Instructions
<section id="instructions"> Измените <code>0.0</code> чтобы продукт равнялся <code>5.0</code> . </section>
<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");'
- text: The variable <code>product</code> should equal <code>5.0</code>.
testString: assert(product === 5.0);
- text: You should use the <code>*</code> operator
testString: assert(/\*/.test(code));
```
@@ -38,12 +43,12 @@ var product = 2.0 * 0.0;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(y){return 'product = '+y;})(product);
```
</div>
@@ -54,6 +59,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var product = 2.0 * 2.5;
```
</section>

View File

@@ -2,25 +2,30 @@
id: cf1231c1c11feddfaeb5bdef
title: Multiply Two Numbers with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cP3y3Aq
forumTopicId: 18243
localeTitle: Умножить два числа с помощью JavaScript
---
## Description
<section id="description"> Мы также можем умножить одно число на другое. JavaScript использует символ <code>*</code> для умножения двух чисел. <p> <strong>пример</strong> </p><blockquote> myVar = 13 * 13; // присвоено 169 </blockquote></section>
<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>
<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");'
- text: Make the variable <code>product</code> equal 80
testString: assert(product === 80);
- text: Use the <code>*</code> operator
testString: assert(/\*/.test(code));
```
@@ -38,12 +43,12 @@ var product = 8 * 0;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return 'product = '+z;})(product);
```
</div>
@@ -54,6 +59,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var product = 8 * 10;
```
</section>

View File

@@ -2,23 +2,28 @@
id: cf1111c1c11feddfaeb7bdef
title: Nest one Array within Another Array
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/crZQZf8
forumTopicId: 18247
localeTitle: Гнездо одного массива в другом массиве
---
## Description
<section id="description"> Вы также можете вложить массивы в другие массивы, например: <code>[[&quot;Bulls&quot;, 23], [&quot;White Sox&quot;, 45]]</code> . Это также называется <dfn>многомерным массивом <dfn>.</dfn></dfn> </section>
<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>
<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.");'
- text: <code>myArray</code> should have at least one array nested within another array.
testString: assert(Array.isArray(myArray) && myArray.some(Array.isArray));
```
@@ -40,12 +45,12 @@ var myArray = [];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
if(typeof myArray !== "undefined"){(function(){return myArray;})();}
```
</div>
@@ -56,6 +61,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = [[1,2,3]];
```
</section>

View File

@@ -2,27 +2,32 @@
id: 56533eb9ac21ba0edf2244e1
title: Nesting For Loops
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cRn6GHM
forumTopicId: 18248
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>
<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>
<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>");'
- text: <code>multiplyAll([[1],[2],[3]])</code> should return <code>6</code>
testString: assert(multiplyAll([[1],[2],[3]]) === 6);
- text: <code>multiplyAll([[1,2],[3,4],[5,6,7]])</code> should return <code>5040</code>
testString: assert(multiplyAll([[1,2],[3,4],[5,6,7]]) === 5040);
- text: <code>multiplyAll([[5,1],[0.2, 4, 0.5],[3, 9]])</code> should return <code>54</code>
testString: assert(multiplyAll([[5,1],[0.2, 4, 0.5],[3, 9]]) === 54);
```
@@ -49,14 +54,23 @@ multiplyAll([[1,2],[3,4],[5,6,7]]);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function multiplyAll(arr) {
var product = 1;
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr[i].length; j++) {
product *= arr[i][j];
}
}
return product;
}
multiplyAll([[1,2],[3,4],[5,6,7]]);
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244bd
title: Passing Values to Functions with Arguments
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cy8rahW
forumTopicId: 18254
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>
<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>
<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.");'
- text: <code>functionWithArgs</code> should be a function
testString: assert(typeof functionWithArgs === 'function');
- text: <code>functionWithArgs(1,2)</code> should output <code>3</code>
testString: if(typeof functionWithArgs === "function") { capture(); functionWithArgs(1,2); uncapture(); } assert(logOutput == 3);
- text: <code>functionWithArgs(7,9)</code> should output <code>16</code>
testString: if(typeof functionWithArgs === "function") { capture(); functionWithArgs(7,9); uncapture(); } assert(logOutput == 16);
- text: Call <code>functionWithArgs</code> with two numbers after you define it.
testString: assert(/^\s*functionWithArgs\s*\(\s*\d+\s*,\s*\d+\s*\)\s*/m.test(code));
```
@@ -48,7 +53,7 @@ ourFunctionWithArgs(10, 5); // Outputs 5
</div>
### Before Test
### Before Tests
<div id='js-setup'>
```js
@@ -77,11 +82,18 @@ capture();
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
uncapture();
if (typeof functionWithArgs !== "function") {
(function() { return "functionWithArgs is not defined"; })();
} else {
(function() { return logOutput || "console.log never called"; })();
}
```
</div>
@@ -92,6 +104,10 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
function functionWithArgs(a, b) {
console.log(a + b);
}
functionWithArgs(10, 5);
```
</section>

View File

@@ -2,27 +2,32 @@
id: 599a789b454f2bbd91a3ff4d
title: Practice comparing different values
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cm8PqCa
forumTopicId: 301174
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>
<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>
<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");'
- text: <code>compareEquality(10, "10")</code> should return "Not Equal"
testString: assert(compareEquality(10, "10") === "Not Equal");
- text: <code>compareEquality("20", 20)</code> should return "Not Equal"
testString: assert(compareEquality("20", 20) === "Not Equal");
- text: You should use the <code>===</code> operator
testString: assert(code.match(/===/g));
```
@@ -49,14 +54,18 @@ compareEquality(10, "10");
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function compareEquality(a,b) {
if (a === b) {
return "Equal";
}
return "Not Equal";
}
```
</section>

View File

@@ -2,15 +2,19 @@
id: 5688e62ea601b2482ff8422b
title: Profile Lookup
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cDqW2Cg
forumTopicId: 18259
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>
<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 id='instructions'>
</section>
## Tests
@@ -18,18 +22,18 @@ localeTitle: Поиск профиля
```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"");'
- text: <code>"Kristian", "lastName"</code> should return <code>"Vos"</code>
testString: assert(lookUpProfile('Kristian','lastName') === "Vos");
- text: <code>"Sherlock", "likes"</code> should return <code>["Intriguing Cases", "Violin"]</code>
testString: assert.deepEqual(lookUpProfile("Sherlock", "likes"), ["Intriguing Cases", "Violin"]);
- text: <code>"Harry","likes"</code> should return an array
testString: assert(typeof lookUpProfile("Harry", "likes") === "object");
- text: <code>"Bob", "number"</code> should return "No such contact"
testString: assert(lookUpProfile("Bob", "number") === "No such contact");
- text: <code>"Bob", "potato"</code> should return "No such contact"
testString: assert(lookUpProfile("Bob", "potato") === "No such contact");
- text: <code>"Akira", "address"</code> should return "No such property"
testString: assert(lookUpProfile("Akira", "address") === "No such property");
```
@@ -83,14 +87,52 @@ lookUpProfile("Akira", "likes");
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
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"]
},
];
//Write your function in between these comments
function lookUpProfile(name, prop){
for(var i in contacts){
if(contacts[i].firstName === name) {
return contacts[i][prop] || "No such property";
}
}
return "No such contact";
}
//Write your function in between these comments
lookUpProfile("Akira", "likes");
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244b4
title: Quoting Strings with Single Quotes
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cbQmnhM
forumTopicId: 18260
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>
<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>
<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>");'
- text: Remove all the <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*'));
- text: You should have two single quotes <code>&#39;</code> and four double quotes <code>&quot;</code>
testString: assert(code.match(/"/g).length === 4 && code.match(/'/g).length === 2);
```
@@ -38,12 +43,12 @@ var myStr = "<a href=\"http://www.example.com\" target=\"_blank\">Link</a>";
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function() { return "myStr = " + myStr; })();
```
</div>
@@ -54,6 +59,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myStr = '<a href="http://www.example.com" target="_blank">Link</a>';
```
</section>

View File

@@ -2,15 +2,19 @@
id: 56533eb9ac21ba0edf2244cf
title: Record Collection
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c4mpysg
forumTopicId: 18261
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="learn/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="learn/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>
<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="learn/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="learn/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 id='instructions'>
</section>
## Tests
@@ -18,20 +22,22 @@ localeTitle: Коллекция записей
```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>");'
- text: You should not change the <code>collection</code> object's initialization
testString: 'assert(code.match(/var collection = {\s*2548: {\s*album: "Slippery When Wet",\s*artist: "Bon Jovi",\s*tracks: \[\s*"Let It Rock",\s*"You Give Love a Bad Name"\s*\]\s*},\s*2468: {\s*album: "1999",\s*artist: "Prince",\s*tracks: \[\s*"1999",\s*"Little Red Corvette"\s*\]\s*},\s*1245: {\s*artist: "Robert Palmer",\s*tracks: \[ \]\s*},\s*5439: {\s*album: "ABBA Gold"\s*}\s*};/g));'
- text: After <code>updateRecords(5439, "artist", "ABBA")</code>, <code>artist</code> should be <code>"ABBA"</code>
testString: assert(updateRecords(5439, "artist", "ABBA")[5439]["artist"] === "ABBA");
- text: 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.
testString: assert(updateRecords(5439, "tracks", "Take a Chance on Me")[5439]["tracks"].pop() === "Take a Chance on Me");
- text: After <code>updateRecords(2548, "artist", "")</code>, <code>artist</code> should not be set
testString: updateRecords(2548, "artist", ""); assert(!collection[2548].hasOwnProperty("artist"));
- text: After <code>updateRecords(1245, "tracks", "Addicted to Love")</code>, <code>tracks</code> should have <code>"Addicted to Love"</code> as the last element.
testString: assert(updateRecords(1245, "tracks", "Addicted to Love")[1245]["tracks"].pop() === "Addicted to Love");
- text: After <code>updateRecords(2468, "tracks", "Free")</code>, <code>tracks</code> should have <code>"1999"</code> as the first element.
testString: assert(updateRecords(2468, "tracks", "Free")[2468]["tracks"][0] === "1999");
- text: After <code>updateRecords(2548, "tracks", "")</code>, <code>tracks</code> should not be set
testString: updateRecords(2548, "tracks", ""); assert(!collection[2548].hasOwnProperty("tracks"));
- text: After <code>updateRecords(1245, "album", "Riptide")</code>, <code>album</code> should be <code>"Riptide"</code>
testString: assert(updateRecords(1245, "album", "Riptide")[1245]["album"] === "Riptide");
```
@@ -45,32 +51,30 @@ tests:
```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"
}
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) {
@@ -86,22 +90,50 @@ 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
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"
}
};
// Only change code below this line
function updateRecords(id, prop, value) {
if(value === "") delete collection[id][prop];
else if(prop === "tracks") {
collection[id][prop] = collection[id][prop] || [];
collection[id][prop].push(value);
} else {
collection[id][prop] = value;
}
return collection;
}
```
</section>

View File

@@ -2,41 +2,46 @@
id: 56533eb9ac21ba0edf2244e0
title: Replacing If Else Chains with Switch
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c3JE8fy
forumTopicId: 18266
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>
<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>
<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)");'
- text: You should not use any <code>else</code> statements anywhere in the editor
testString: assert(!/else/g.test(code));
- text: You should not use any <code>if</code> statements anywhere in the editor
testString: assert(!/if/g.test(code));
- text: You should have at least four <code>break</code> statements
testString: assert(code.match(/break/g).length >= 4);
- text: <code>chainToSwitch("bob")</code> should be "Marley"
testString: assert(chainToSwitch("bob") === "Marley");
- text: <code>chainToSwitch(42)</code> should be "The Answer"
testString: assert(chainToSwitch(42) === "The Answer");
- text: '<code>chainToSwitch(1)</code> should be "There is no #1"'
testString: 'assert(chainToSwitch(1) === "There is no #1");'
- text: <code>chainToSwitch(99)</code> should be "Missed me by this much!"
testString: assert(chainToSwitch(99) === "Missed me by this much!");
- text: <code>chainToSwitch(7)</code> should be "Ate Nine"
testString: assert(chainToSwitch(7) === "Ate Nine");
- text: <code>chainToSwitch("John")</code> should be "" (empty string)
testString: assert(chainToSwitch("John") === "");
- text: <code>chainToSwitch(156)</code> should be "" (empty string)
testString: assert(chainToSwitch(156) === "");
```
@@ -75,14 +80,33 @@ chainToSwitch(7);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function chainToSwitch(val) {
var answer = "";
switch(val) {
case "bob":
answer = "Marley";
break;
case 42:
answer = "The Answer";
break;
case 1:
answer = "There is no #1";
break;
case 99:
answer = "Missed me by this much!";
break;
case 7:
answer = "Ate Nine";
}
return answer;
}
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244c2
title: Return a Value from a Function with Return
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cy87wue
forumTopicId: 18271
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>
<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>
<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>");'
- text: <code>timesFive</code> should be a function
testString: assert(typeof timesFive === 'function');
- text: <code>timesFive(5)</code> should return <code>25</code>
testString: assert(timesFive(5) === 25);
- text: <code>timesFive(2)</code> should return <code>10</code>
testString: assert(timesFive(2) === 10);
- text: <code>timesFive(0)</code> should return <code>0</code>
testString: assert(timesFive(0) === 0);
```
@@ -51,14 +56,16 @@ console.log(minusSeven(10));
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function timesFive(num) {
return num * 5;
}
timesFive(10);
```
</section>

View File

@@ -2,33 +2,38 @@
id: 56533eb9ac21ba0edf2244c4
title: Return Early Pattern for Functions
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cQe39Sq
forumTopicId: 18272
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>
<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>
<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>");'
- text: <code>abTest(2,2)</code> should return a number
testString: assert(typeof abTest(2,2) === 'number' );
- text: <code>abTest(2,2)</code> should return <code>8</code>
testString: assert(abTest(2,2) === 8 );
- text: <code>abTest(-2,2)</code> should return <code>undefined</code>
testString: assert(abTest(-2,2) === undefined );
- text: <code>abTest(2,-2)</code> should return <code>undefined</code>
testString: assert(abTest(2,-2) === undefined );
- text: <code>abTest(2,8)</code> should return <code>18</code>
testString: assert(abTest(2,8) === 18 );
- text: <code>abTest(3,3)</code> should return <code>12</code>
testString: assert(abTest(3,3) === 12 );
```
@@ -58,14 +63,18 @@ abTest(2,2);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function abTest(a, b) {
if(a < 0 || b < 0) {
return undefined;
}
return Math.round(Math.pow(Math.sqrt(a) + Math.sqrt(b), 2));
}
```
</section>

View File

@@ -2,27 +2,32 @@
id: 5679ceb97cbaa8c51670a16b
title: Returning Boolean Values from Functions
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cp62qAQ
forumTopicId: 18273
localeTitle: Возврат булевых значений из функций
---
## Description
<section id="description"> Вы можете вспомнить из <a href="learn/javascript-algorithms-and-data-structures/basic-javascript/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>
<section id='description'>
Вы можете вспомнить из <a href="learn/javascript-algorithms-and-data-structures/basic-javascript/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>
<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");'
- text: <code>isLess(10,15)</code> should return <code>true</code>
testString: assert(isLess(10,15) === true);
- text: <code>isLess(15,10)</code> should return <code>false</code>
testString: assert(isLess(15, 10) === false);
- text: You should not use any <code>if</code> or <code>else</code> statements
testString: assert(!/if|else/g.test(code));
```
@@ -50,14 +55,15 @@ isLess(10, 15);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function isLess(a, b) {
return a < b;
}
```
</section>

View File

@@ -2,33 +2,38 @@
id: 56533eb9ac21ba0edf2244dd
title: Selecting from Many Options with Switch Statements
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c4mv4fm
forumTopicId: 18277
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>
<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>
<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");'
- text: <code>caseInSwitch(1)</code> should have a value of "alpha"
testString: assert(caseInSwitch(1) === "alpha");
- text: <code>caseInSwitch(2)</code> should have a value of "beta"
testString: assert(caseInSwitch(2) === "beta");
- text: <code>caseInSwitch(3)</code> should have a value of "gamma"
testString: assert(caseInSwitch(3) === "gamma");
- text: <code>caseInSwitch(4)</code> should have a value of "delta"
testString: assert(caseInSwitch(4) === "delta");
- text: You should not use any <code>if</code> or <code>else</code> statements
testString: assert(!/else/g.test(code) || !/if/g.test(code));
- text: You should have at least 3 <code>break</code> statements
testString: assert(code.match(/break/g).length > 2);
```
@@ -57,14 +62,30 @@ caseInSwitch(1);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function caseInSwitch(val) {
var answer = "";
switch(val) {
case 1:
answer = "alpha";
break;
case 2:
answer = "beta";
break;
case 3:
answer = "gamma";
break;
case 4:
answer = "delta";
}
return answer;
}
```
</section>

View File

@@ -2,15 +2,19 @@
id: 56533eb9ac21ba0edf2244bc
title: Shopping List
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c9MEKHZ
forumTopicId: 18280
localeTitle: Список покупок
---
## Description
<section id="description"> Создайте список покупок в переменной <code>myList</code> . Список должен быть многомерным массивом, содержащим несколько подмассивов. Первый элемент в каждом под-массиве должен содержать строку с именем элемента. Второй элемент должен быть числом, представляющим количество, т. Е. <code>[&quot;Chocolate Bar&quot;, 15]</code> В списке должно быть не менее 5 под-массивов. </section>
<section id='description'>
Создайте список покупок в переменной <code>myList</code> . Список должен быть многомерным массивом, содержащим несколько подмассивов. Первый элемент в каждом под-массиве должен содержать строку с именем элемента. Второй элемент должен быть числом, представляющим количество, т. Е. <code>[&quot;Chocolate Bar&quot;, 15]</code> В списке должно быть не менее 5 под-массивов.
</section>
## Instructions
<section id="instructions">
<section id='instructions'>
</section>
## Tests
@@ -18,14 +22,14 @@ localeTitle: Список покупок
```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");'
- text: <code>myList</code> should be an array
testString: assert(isArray);
- text: The first elements in each of your sub-arrays must all be strings
testString: assert(hasString);
- text: The second elements in each of your sub-arrays must all be numbers
testString: assert(hasNumber);
- text: You must have at least 5 items in your list
testString: assert(count > 4);
```
@@ -43,12 +47,37 @@ var myList = [];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
var count = 0;
var isArray = false;
var hasString = false;
var hasNumber = false;
(function(list){
if(Array.isArray(myList)) {
isArray = true;
if(myList.length > 0) {
hasString = true;
hasNumber = true;
for (var elem of myList) {
if(!elem || !elem[0] || typeof elem[0] !== 'string') {
hasString = false;
}
if(!elem || typeof elem[1] !== 'number') {
hasNumber = false;
}
}
}
count = myList.length;
return JSON.stringify(myList);
} else {
return "myList is not an array";
}
})(myList);
```
</div>
@@ -59,6 +88,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myList = [
["Candy", 10],
["Potatoes", 12],
["Eggs", 12],
["Catfood", 1],
["Toads", 9]
];
```
</section>

View File

@@ -2,15 +2,19 @@
id: 56533eb9ac21ba0edf2244c6
title: Stand in Line
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/ca8Q8tP
forumTopicId: 18307
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>
<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 id='instructions'>
</section>
## Tests
@@ -18,16 +22,16 @@ localeTitle: Стоять в очереди
```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>");'
- text: <code>nextInLine([], 5)</code> should return a number.
testString: assert.isNumber(nextInLine([],5));
- text: <code>nextInLine([], 1)</code> should return <code>1</code>
testString: assert(nextInLine([],1) === 1);
- text: <code>nextInLine([2], 1)</code> should return <code>2</code>
testString: assert(nextInLine([2],1) === 2);
- text: <code>nextInLine([5,6,7,8,9], 1)</code> should return <code>5</code>
testString: assert(nextInLine([5,6,7,8,9],1) === 5);
- text: After <code>nextInLine(testArr, 10)</code>, <code>testArr[4]</code> should be <code>10</code>
testString: nextInLine(testArr, 10); assert(testArr[4] === 10);
```
@@ -57,7 +61,7 @@ console.log("After: " + JSON.stringify(testArr));
</div>
### Before Test
### Before Tests
<div id='js-setup'>
```js
@@ -86,11 +90,14 @@ capture();
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
uncapture();
testArr = [1,2,3,4,5];
(function() { return logOutput.join("\n");})();
```
</div>
@@ -101,6 +108,12 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var testArr = [ 1,2,3,4,5];
function nextInLine(arr, item) {
arr.push(item);
return arr.shift();
}
```
</section>

View File

@@ -2,27 +2,32 @@
id: bd7993c9c69feddfaeb8bdef
title: Store Multiple Values in one Variable using JavaScript Arrays
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/crZQWAm
forumTopicId: 18309
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>
<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>
<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>.");'
- text: <code>myArray</code> should be an <code>array</code>.
testString: assert(typeof myArray == 'object');
- text: The first item in <code>myArray</code> should be a <code>string</code>.
testString: assert(typeof myArray[0] !== 'undefined' && typeof myArray[0] == 'string');
- text: The second item in <code>myArray</code> should be a <code>number</code>.
testString: assert(typeof myArray[1] !== 'undefined' && typeof myArray[1] == 'number');
```
@@ -44,12 +49,12 @@ var myArray = [];
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return z;})(myArray);
```
</div>
@@ -60,6 +65,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myArray = ["The Answer", 42];
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244a8
title: Storing Values with the Assignment Operator
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cEanysE
forumTopicId: 18310
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>
<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>
<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>");'
- text: Do not change code above the line
testString: assert(/var a;/.test(code) && /var b = 2;/.test(code));
- text: <code>a</code> should have a value of 7
testString: assert(typeof a === 'number' && a === 7);
- text: <code>b</code> should have a value of 7
testString: assert(typeof b === 'number' && b === 7);
- text: <code>a</code> should be assigned to <code>b</code> with <code>=</code>
testString: assert(/b\s*=\s*a\s*;/g.test(code));
```
@@ -46,7 +51,7 @@ var b = 2;
</div>
### Before Test
### Before Tests
<div id='js-setup'>
```js
@@ -61,11 +66,12 @@ if (typeof b != 'undefined') {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(a,b){return "a = " + a + ", b = " + b;})(a,b);
```
</div>
@@ -76,6 +82,10 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var a;
var b = 2;
a = 7;
b = a;
```
</section>

View File

@@ -2,25 +2,30 @@
id: cf1111c1c11feddfaeb4bdef
title: Subtract One Number from Another with JavaScript
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cP3yQtk
forumTopicId: 18314
localeTitle: Вычитайте один номер из другого с помощью JavaScript
---
## Description
<section id="description"> Мы также можем вычесть одно число из другого. JavaScript использует символ <code>-</code> для вычитания. <p> <strong>пример</strong> </p><blockquote> myVar = 12 - 6; // присвоено 6 </blockquote></section>
<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>
<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.");'
- text: Make the variable <code>difference</code> equal 12.
testString: assert(difference === 12);
- text: Only subtract one number from 45.
testString: assert(/var\s*difference\s*=\s*45\s*-\s*[0-9]*;(?!\s*[a-zA-Z0-9]+)/.test(code));
```
@@ -38,12 +43,12 @@ var difference = 45 - 0;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return 'difference = '+z;})(difference);
```
</div>
@@ -54,6 +59,7 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var difference = 45 - 33;
```
</section>

View File

@@ -2,27 +2,32 @@
id: 567af2437cbaa8c51670a16c
title: Testing Objects for Properties
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cm8Q7Ua
forumTopicId: 18324
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>
<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>
<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>.");'
- text: <code>checkObj("gift")</code> should return <code>"pony"</code>.
testString: assert(checkObj("gift") === "pony");
- text: <code>checkObj("pet")</code> should return <code>"kitten"</code>.
testString: assert(checkObj("pet") === "kitten");
- text: <code>checkObj("house")</code> should return <code>"Not Found"</code>.
testString: assert(checkObj("house") === "Not Found");
```
@@ -54,14 +59,24 @@ checkObj("gift");
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
var myObj = {
gift: "pony",
pet: "kitten",
bed: "sleigh"
};
function checkObj(checkProp) {
if(myObj.hasOwnProperty(checkProp)) {
return myObj[checkProp];
} else {
return "Not Found";
}
}
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56533eb9ac21ba0edf2244ba
title: Understand String Immutability
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cWPVaUR
forumTopicId: 18331
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>
<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>
<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");'
- text: <code>myStr</code> should have a value of <code>Hello World</code>
testString: assert(myStr === "Hello World");
- text: Do not change the code above the line
testString: assert(/myStr = "Jello World"/.test(code));
```
@@ -43,12 +48,12 @@ myStr[0] = "H"; // Fix Me
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(v){return "myStr = " + v;})(myStr);
```
</div>
@@ -59,6 +64,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myStr = "Jello World";
myStr = "Hello World";
```
</section>

View File

@@ -2,25 +2,30 @@
id: bd7123c9c441eddfaeb5bdef
title: Understanding Boolean Values
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c9Me8t4
forumTopicId: 301176
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>
<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>
<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.");'
- text: The <code>welcomeToBooleans()</code> function should return a boolean &#40;true/false&#41; value.
testString: assert(typeof welcomeToBooleans() === 'boolean');
- text: <code>welcomeToBooleans()</code> should return true.
testString: assert(welcomeToBooleans() === true);
```
@@ -34,23 +39,23 @@ tests:
```js
function welcomeToBooleans() {
// Only change code below this line.
// Only change code below this line.
return false; // Change this line
return false; // Change this line
// Only change code above this line.
// Only change code above this line.
}
```
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
welcomeToBooleans();
```
</div>
@@ -61,6 +66,9 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
function welcomeToBooleans() {
return true; // Change this line
}
```
</section>

View File

@@ -2,33 +2,38 @@
id: 56533eb9ac21ba0edf2244ab
title: Understanding Case Sensitivity in Variables
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cd6GDcD
forumTopicId: 18334
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>
<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>
<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.");'
- text: <code>studlyCapVar</code> is defined and has a value of <code>10</code>
testString: assert(typeof studlyCapVar !== 'undefined' && studlyCapVar === 10);
- text: <code>properCamelCase</code> is defined and has a value of <code>"A String"</code>
testString: assert(typeof properCamelCase !== 'undefined' && properCamelCase === "A String");
- text: <code>titleCaseOver</code> is defined and has a value of <code>9000</code>
testString: assert(typeof titleCaseOver !== 'undefined' && titleCaseOver === 9000);
- text: <code>studlyCapVar</code> should use camelCase in both declaration and assignment sections.
testString: assert(code.match(/studlyCapVar/g).length === 2);
- text: <code>properCamelCase</code> should use camelCase in both declaration and assignment sections.
testString: assert(code.match(/properCamelCase/g).length === 2);
- text: <code>titleCaseOver</code> should use camelCase in both declaration and assignment sections.
testString: assert(code.match(/titleCaseOver/g).length === 2);
```
@@ -54,14 +59,19 @@ tITLEcASEoVER = 9000;
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
var studlyCapVar;
var properCamelCase;
var titleCaseOver;
studlyCapVar = 10;
properCamelCase = "A String";
titleCaseOver = 9000;
```
</section>

View File

@@ -2,29 +2,34 @@
id: 598e8944f009e646fc236146
title: Understanding Undefined Value returned from a Function
challengeType: 1
videoUrl: ''
localeTitle: 'Понимание неопределенного значения, возвращаемого функцией'
videoUrl: https://scrimba.com/c/ce2p7cL
forumTopicId: 301177
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>
<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>
<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");'
- text: <code>addFive</code> should be a function
testString: assert(typeof addFive === 'function');
- text: <code>sum</code> should be equal to 8
testString: assert(sum === 8);
- text: Returned value from <code>addFive</code> should be <code>undefined</code>
testString: assert(addFive() === undefined);
- text: Inside of your functions, add 5 to the <code>sum</code> variable
testString: assert(code.match(/(sum\s*\=\s*sum\s*\+\s*5)|(sum\s*\+\=\s*5)/g).length === 1);
```
@@ -53,12 +58,15 @@ var returnedValue = addFive();
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
var sum = 0;
function addThree() {sum = sum + 3;}
addThree();
addFive();
```
</div>
@@ -69,6 +77,9 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
function addFive() {
sum = sum + 5;
}
```
</section>

View File

@@ -2,29 +2,34 @@
id: 56533eb9ac21ba0edf2244aa
title: Understanding Uninitialized Variables
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cBa2JAL
forumTopicId: 18335
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>
<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>
<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");'
- text: <code>a</code> should be defined and evaluated to have the value of <code>6</code>
testString: assert(typeof a === 'number' && a === 6);
- text: <code>b</code> should be defined and evaluated to have the value of <code>15</code>
testString: assert(typeof b === 'number' && b === 15);
- text: <code>c</code> should not contain <code>undefined</code> and should have a value of "I am a String!"
testString: assert(!/undefined/.test(c) && c === "I am a String!");
- text: Do not change code below the line
testString: assert(/a = a \+ 1;/.test(code) && /b = b \+ 5;/.test(code) && /c = c \+ " String!";/.test(code));
```
@@ -51,12 +56,12 @@ c = c + " String!";
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(a,b,c){ return "a = " + a + ", b = " + b + ", c = '" + c + "'"; })(a,b,c);
```
</div>
@@ -67,6 +72,12 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var a = 5;
var b = 10;
var c = "I am a";
a = a + 1;
b = b + 5;
c = c + " String!";
```
</section>

View File

@@ -2,25 +2,30 @@
id: 56bbb991ad1ed5201cd392d1
title: Updating Object Properties
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/c9yEJT4
forumTopicId: 18336
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>
<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>
<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");'
- text: Update <code>myDog</code>&apos;s <code>"name"</code> property to equal "Happy Coder".
testString: assert(/happy coder/gi.test(myDog.name));
- text: Do not edit the <code>myDog</code> definition
testString: 'assert(/"name": "Coder"/.test(code));'
```
@@ -56,12 +61,12 @@ var myDog = {
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(z){return z;})(myDog);
```
</div>
@@ -72,6 +77,13 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var myDog = {
"name": "Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"]
};
myDog.name = "Happy Coder";
```
</section>

View File

@@ -2,25 +2,30 @@
id: bd7123c9c549eddfaeb5bdef
title: Use Bracket Notation to Find the First Character in a String
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/ca8JwhW
forumTopicId: 18341
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>
<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>
<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.");'
- text: The <code>firstLetterOfLastName</code> variable should have the value of <code>L</code>.
testString: assert(firstLetterOfLastName === 'L');
- text: You should use bracket notation.
testString: assert(code.match(/firstLetterOfLastName\s*?=\s*?lastName\[.*?\]/));
```
@@ -49,12 +54,12 @@ firstLetterOfLastName = lastName;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(v){return v;})(firstLetterOfLastName);
```
</div>
@@ -65,6 +70,11 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var firstLetterOfLastName = "";
var lastName = "Lovelace";
// Only change code below this line
firstLetterOfLastName = lastName[0];
```
</section>

View File

@@ -2,25 +2,30 @@
id: bd7123c9c451eddfaeb5bdef
title: Use Bracket Notation to Find the Last Character in a String
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cBZQGcv
forumTopicId: 18342
localeTitle: Использовать обозначение скобки для поиска последнего символа в строке
---
## Description
<section id="description"> Чтобы получить последнюю букву строки, вы можете вычесть ее из длины строки. Например, если <code>var firstName = &quot;Charles&quot;</code> , вы можете получить значение последней буквы строки, используя <code>firstName[firstName.length - 1]</code> . </section>
<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>
<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.");'
- text: <code>lastLetterOfLastName</code> should be "e".
testString: assert(lastLetterOfLastName === "e");
- text: You have to use <code>.length</code> to get the last letter.
testString: assert(code.match(/\.length/g).length === 2);
```
@@ -46,12 +51,12 @@ var lastLetterOfLastName = lastName;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(v){return v;})(lastLetterOfLastName);
```
</div>
@@ -62,6 +67,11 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var firstName = "Ada";
var lastLetterOfFirstName = firstName[firstName.length - 1];
var lastName = "Lovelace";
var lastLetterOfLastName = lastName[lastName.length - 1];
```
</section>

View File

@@ -2,25 +2,30 @@
id: bd7123c9c450eddfaeb5bdef
title: Use Bracket Notation to Find the Nth Character in a String
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cWPVJua
forumTopicId: 18343
localeTitle: Использовать обозначения скобок для поиска N-го символа в строке
---
## Description
<section id="description"> Вы также можете использовать <dfn>нотацию</dfn> в виде <dfn>скобок,</dfn> чтобы получить символ в других позициях внутри строки. Помните, что компьютеры начинают отсчет в <code>0</code> , поэтому первый символ на самом деле является нулевым символом. </section>
<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>
<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.");'
- text: The <code>thirdLetterOfLastName</code> variable should have the value of <code>v</code>.
testString: assert(thirdLetterOfLastName === 'v');
- text: You should use bracket notation.
testString: assert(code.match(/thirdLetterOfLastName\s*?=\s*?lastName\[.*?\]/));
```
@@ -46,12 +51,12 @@ var thirdLetterOfLastName = lastName;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(v){return v;})(thirdLetterOfLastName);
```
</div>
@@ -62,6 +67,8 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var lastName = "Lovelace";
var thirdLetterOfLastName = lastName[2];
```
</section>

View File

@@ -2,25 +2,30 @@
id: bd7123c9c452eddfaeb5bdef
title: Use Bracket Notation to Find the Nth-to-Last Character in a String
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cw4vkh9
forumTopicId: 18344
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>
<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>
<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.");'
- text: <code>secondToLastLetterOfLastName</code> should be "c".
testString: assert(secondToLastLetterOfLastName === 'c');
- text: You have to use <code>.length</code> to get the second last letter.
testString: assert(code.match(/\.length/g).length === 2);
```
@@ -46,12 +51,12 @@ var secondToLastLetterOfLastName = lastName;
</div>
### After Test
### After Tests
<div id='js-teardown'>
```js
console.info('after the test');
(function(v){return v;})(secondToLastLetterOfLastName);
```
</div>
@@ -62,6 +67,11 @@ console.info('after the test');
<section id='solution'>
```js
// solution required
var firstName = "Ada";
var thirdToLastLetterOfFirstName = firstName[firstName.length - 3];
var lastName = "Lovelace";
var secondToLastLetterOfLastName = lastName[lastName.length - 2];
```
</section>

View File

@@ -2,31 +2,36 @@
id: cf1111c1c12feddfaeb3bdef
title: Use Conditional Logic with If Statements
challengeType: 1
videoUrl: ''
videoUrl: https://scrimba.com/c/cy87mf3
forumTopicId: 18348
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>
<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>
<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"");'
- text: <code>trueOrFalse</code> should be a function
testString: assert(typeof trueOrFalse === "function");
- text: <code>trueOrFalse(true)</code> should return a string
testString: assert(typeof trueOrFalse(true) === "string");
- text: <code>trueOrFalse(false)</code> should return a string
testString: assert(typeof trueOrFalse(false) === "string");
- text: <code>trueOrFalse(true)</code> should return "Yes, that was true"
testString: assert(trueOrFalse(true) === "Yes, that was true");
- text: <code>trueOrFalse(false)</code> should return "No, that was false"
testString: assert(trueOrFalse(false) === "No, that was false");
```
@@ -64,14 +69,18 @@ trueOrFalse(true);
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
function trueOrFalse(wasThatTrue) {
if (wasThatTrue) {
return "Yes, that was true";
}
return "No, that was false";
}
```
</section>

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