fix(curriculum): fix challenges for russian language
This commit is contained in:
@@ -3,15 +3,18 @@ id: a77dbc43c33f39daa4429b4f
|
||||
title: Boo who
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
localeTitle: 'Бу, кто'
|
||||
forumTopicId: 16000
|
||||
localeTitle: Бу, кто
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Проверьте, классифицировано ли значение как булевский примитив. Вернуть true или false. Булевы примитивы являются истинными и ложными. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Попробуйте подключить программу. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Проверьте, классифицировано ли значение как булевский примитив. Вернуть true или false. Булевы примитивы являются истинными и ложными. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Попробуйте подключить программу. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,26 +22,26 @@ localeTitle: 'Бу, кто'
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>booWho(true)</code> должен возвращать true.
|
||||
testString: 'assert.strictEqual(booWho(true), true, "<code>booWho(true)</code> should return true.");'
|
||||
- text: <code>booWho(false)</code> должен возвращать true.
|
||||
testString: 'assert.strictEqual(booWho(false), true, "<code>booWho(false)</code> should return true.");'
|
||||
- text: '<code>booWho([1, 2, 3])</code> должен возвращать false.'
|
||||
testString: 'assert.strictEqual(booWho([1, 2, 3]), false, "<code>booWho([1, 2, 3])</code> should return false.");'
|
||||
- text: '<code>booWho([].slice)</code> должен возвращать false.'
|
||||
testString: 'assert.strictEqual(booWho([].slice), false, "<code>booWho([].slice)</code> should return false.");'
|
||||
- text: '<code>booWho({ "a": 1 })</code> должен возвращать false.'
|
||||
testString: 'assert.strictEqual(booWho({ "a": 1 }), false, "<code>booWho({ "a": 1 })</code> should return false.");'
|
||||
- text: <code>booWho(1)</code> должен возвращать false.
|
||||
testString: 'assert.strictEqual(booWho(1), false, "<code>booWho(1)</code> should return false.");'
|
||||
- text: <code>booWho(NaN)</code> должно возвращать false.
|
||||
testString: 'assert.strictEqual(booWho(NaN), false, "<code>booWho(NaN)</code> should return false.");'
|
||||
- text: ''
|
||||
testString: 'assert.strictEqual(booWho("a"), false, "<code>booWho("a")</code> should return false.");'
|
||||
- text: ''
|
||||
testString: 'assert.strictEqual(booWho("true"), false, "<code>booWho("true")</code> should return false.");'
|
||||
- text: <code>booWho("false")</code> должен возвращать false.
|
||||
testString: 'assert.strictEqual(booWho("false"), false, "<code>booWho("false")</code> should return false.");'
|
||||
- text: <code>booWho(true)</code> should return true.
|
||||
testString: assert.strictEqual(booWho(true), true);
|
||||
- text: <code>booWho(false)</code> should return true.
|
||||
testString: assert.strictEqual(booWho(false), true);
|
||||
- text: <code>booWho([1, 2, 3])</code> should return false.
|
||||
testString: assert.strictEqual(booWho([1, 2, 3]), false);
|
||||
- text: <code>booWho([].slice)</code> should return false.
|
||||
testString: assert.strictEqual(booWho([].slice), false);
|
||||
- text: '<code>booWho({ "a": 1 })</code> should return false.'
|
||||
testString: 'assert.strictEqual(booWho({ "a": 1 }), false);'
|
||||
- text: <code>booWho(1)</code> should return false.
|
||||
testString: assert.strictEqual(booWho(1), false);
|
||||
- text: <code>booWho(NaN)</code> should return false.
|
||||
testString: assert.strictEqual(booWho(NaN), false);
|
||||
- text: <code>booWho("a")</code> should return false.
|
||||
testString: assert.strictEqual(booWho("a"), false);
|
||||
- text: <code>booWho("true")</code> should return false.
|
||||
testString: assert.strictEqual(booWho("true"), false);
|
||||
- text: <code>booWho("false")</code> should return false.
|
||||
testString: assert.strictEqual(booWho("false"), false);
|
||||
|
||||
```
|
||||
|
||||
@@ -61,14 +64,17 @@ booWho(null);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function booWho(bool) {
|
||||
return typeof bool === "boolean";
|
||||
}
|
||||
|
||||
booWho(null);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: a9bd25c716030ec90084d8a1
|
||||
title: Chunky Monkey
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16005
|
||||
localeTitle: Короткая обезьяна
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Напишите функцию, которая разбивает массив (первый аргумент) на группы по длине <code>size</code> (второй аргумент) и возвращает их в виде двумерного массива. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Напишите функцию, которая разбивает массив (первый аргумент) на группы по длине <code>size</code> (второй аргумент) и возвращает их в виде двумерного массива. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,20 +22,20 @@ localeTitle: Короткая обезьяна
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>chunkArrayInGroups(["a", "b", "c", "d"], 2)</code> должны возвращать <code>[["a", "b"], ["c", "d"]]</code> .'
|
||||
testString: 'assert.deepEqual(chunkArrayInGroups(["a", "b", "c", "d"], 2), [["a", "b"], ["c", "d"]], "<code>chunkArrayInGroups(["a", "b", "c", "d"], 2)</code> should return <code>[["a", "b"], ["c", "d"]]</code>.");'
|
||||
- text: '<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3)</code> должны возвращать <code>[[0, 1, 2], [3, 4, 5]]</code> .'
|
||||
testString: 'assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3), [[0, 1, 2], [3, 4, 5]], "<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3)</code> should return <code>[[0, 1, 2], [3, 4, 5]]</code>.");'
|
||||
- text: '<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 2)</code> должны возвращать <code>[[0, 1], [2, 3], [4, 5]]</code> .'
|
||||
testString: 'assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 2), [[0, 1], [2, 3], [4, 5]], "<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 2)</code> should return <code>[[0, 1], [2, 3], [4, 5]]</code>.");'
|
||||
- text: '<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4)</code> должны возвращать <code>[[0, 1, 2, 3], [4, 5]]</code> .'
|
||||
testString: 'assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4), [[0, 1, 2, 3], [4, 5]], "<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4)</code> should return <code>[[0, 1, 2, 3], [4, 5]]</code>.");'
|
||||
- text: '<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3)</code> должны возвращать <code>[[0, 1, 2], [3, 4, 5], [6]]</code> .'
|
||||
testString: 'assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3), [[0, 1, 2], [3, 4, 5], [6]], "<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3)</code> should return <code>[[0, 1, 2], [3, 4, 5], [6]]</code>.");'
|
||||
- text: '<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4)</code> должны возвращать <code>[[0, 1, 2, 3], [4, 5, 6, 7], [8]]</code> .'
|
||||
testString: 'assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4), [[0, 1, 2, 3], [4, 5, 6, 7], [8]], "<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4)</code> should return <code>[[0, 1, 2, 3], [4, 5, 6, 7], [8]]</code>.");'
|
||||
- text: '<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2)</code> должны возвращать <code>[[0, 1], [2, 3], [4, 5], [6, 7], [8]]</code> .'
|
||||
testString: 'assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2), [[0, 1], [2, 3], [4, 5], [6, 7], [8]], "<code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2)</code> should return <code>[[0, 1], [2, 3], [4, 5], [6, 7], [8]]</code>.");'
|
||||
- text: <code>chunkArrayInGroups(["a", "b", "c", "d"], 2)</code> should return <code>[["a", "b"], ["c", "d"]]</code>.
|
||||
testString: assert.deepEqual(chunkArrayInGroups(["a", "b", "c", "d"], 2), [["a", "b"], ["c", "d"]]);
|
||||
- text: <code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3)</code> should return <code>[[0, 1, 2], [3, 4, 5]]</code>.
|
||||
testString: assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 3), [[0, 1, 2], [3, 4, 5]]);
|
||||
- text: <code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 2)</code> should return <code>[[0, 1], [2, 3], [4, 5]]</code>.
|
||||
testString: assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 2), [[0, 1], [2, 3], [4, 5]]);
|
||||
- text: <code>chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4)</code> should return <code>[[0, 1, 2, 3], [4, 5]]</code>.
|
||||
testString: assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5], 4), [[0, 1, 2, 3], [4, 5]]);
|
||||
- text: <code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3)</code> should return <code>[[0, 1, 2], [3, 4, 5], [6]]</code>.
|
||||
testString: assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6], 3), [[0, 1, 2], [3, 4, 5], [6]]);
|
||||
- text: <code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4)</code> should return <code>[[0, 1, 2, 3], [4, 5, 6, 7], [8]]</code>.
|
||||
testString: assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 4), [[0, 1, 2, 3], [4, 5, 6, 7], [8]]);
|
||||
- text: <code>chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2)</code> should return <code>[[0, 1], [2, 3], [4, 5], [6, 7], [8]]</code>.
|
||||
testString: assert.deepEqual(chunkArrayInGroups([0, 1, 2, 3, 4, 5, 6, 7, 8], 2), [[0, 1], [2, 3], [4, 5], [6, 7], [8]]);
|
||||
|
||||
```
|
||||
|
||||
@@ -55,14 +58,23 @@ chunkArrayInGroups(["a", "b", "c", "d"], 2);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function chunkArrayInGroups(arr, size) {
|
||||
let out = [];
|
||||
|
||||
for (let i = 0; i < arr.length; i += size) {
|
||||
out.push(arr.slice(i, i + size));
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
chunkArrayInGroups(["a", "b", "c", "d"], 2);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: acda2fb1324d9b0fa741e6b5
|
||||
title: Confirm the Ending
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16006
|
||||
localeTitle: Подтвердить завершение
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Проверьте, заканчивается ли строка (первый аргумент, <code>str</code> ) заданной целевой строкой (второй аргумент, <code>target</code> ). Эта проблема <em>может</em> быть решена с помощью <code>.endsWith()</code> , который был введен в ES2015. Но для этой задачи мы хотели бы, чтобы вы использовали один из методов подстроки JavaScript. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Проверьте, заканчивается ли строка (первый аргумент, <code>str</code> ) заданной целевой строкой (второй аргумент, <code>target</code> ). Эта проблема <em>может</em> быть решена с помощью <code>.endsWith()</code> , который был введен в ES2015. Но для этой задачи мы хотели бы, чтобы вы использовали один из методов подстроки JavaScript. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,28 +22,28 @@ localeTitle: Подтвердить завершение
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>confirmEnding("Bastian", "n")</code> должен возвращать true.'
|
||||
testString: 'assert(confirmEnding("Bastian", "n") === true, "<code>confirmEnding("Bastian", "n")</code> should return true.");'
|
||||
- text: '<code>confirmEnding("Congratulation", "on")</code> должно возвращать true.'
|
||||
testString: 'assert(confirmEnding("Congratulation", "on") === true, "<code>confirmEnding("Congratulation", "on")</code> should return true.");'
|
||||
- text: '<code>confirmEnding("Connor", "n")</code> должен возвращать значение false.'
|
||||
testString: 'assert(confirmEnding("Connor", "n") === false, "<code>confirmEnding("Connor", "n")</code> should return false.");'
|
||||
- text: '<code>confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification")</code> должны возвращать значение false.'
|
||||
testString: 'assert(confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") === false, "<code>confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification")</code> should return false.");'
|
||||
- text: '<code>confirmEnding("He has to give me a new name", "name")</code> должен возвращать true.'
|
||||
testString: 'assert(confirmEnding("He has to give me a new name", "name") === true, "<code>confirmEnding("He has to give me a new name", "name")</code> should return true.");'
|
||||
- text: '<code>confirmEnding("Open sesame", "same")</code> должен возвращать true.'
|
||||
testString: 'assert(confirmEnding("Open sesame", "same") === true, "<code>confirmEnding("Open sesame", "same")</code> should return true.");'
|
||||
- text: '<code>confirmEnding("Open sesame", "pen")</code> должен возвращать false.'
|
||||
testString: 'assert(confirmEnding("Open sesame", "pen") === false, "<code>confirmEnding("Open sesame", "pen")</code> should return false.");'
|
||||
- text: '<code>confirmEnding("Open sesame", "game")</code> должен возвращать значение false.'
|
||||
testString: 'assert(confirmEnding("Open sesame", "game") === false, "<code>confirmEnding("Open sesame", "game")</code> should return false.");'
|
||||
- text: '<code>confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain")</code> должны возвращать ложные.'
|
||||
testString: 'assert(confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") === false, "<code>confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain")</code> should return false.");'
|
||||
- text: '<code>confirmEnding("Abstraction", "action")</code> должно возвращать true.'
|
||||
testString: 'assert(confirmEnding("Abstraction", "action") === true, "<code>confirmEnding("Abstraction", "action")</code> should return true.");'
|
||||
- text: Не используйте встроенный метод <code>.endsWith()</code> чтобы решить проблему.
|
||||
testString: 'assert(!(/\.endsWith\(.*?\)\s*?;?/.test(code)) && !(/\["endsWith"\]/.test(code)), "Do not use the built-in method <code>.endsWith()</code> to solve the challenge.");'
|
||||
- text: <code>confirmEnding("Bastian", "n")</code> should return true.
|
||||
testString: assert(confirmEnding("Bastian", "n") === true);
|
||||
- text: <code>confirmEnding("Congratulation", "on")</code> should return true.
|
||||
testString: assert(confirmEnding("Congratulation", "on") === true);
|
||||
- text: <code>confirmEnding("Connor", "n")</code> should return false.
|
||||
testString: assert(confirmEnding("Connor", "n") === false);
|
||||
- text: <code>confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification")</code> should return false.
|
||||
testString: assert(confirmEnding("Walking on water and developing software from a specification are easy if both are frozen", "specification") === false);
|
||||
- text: <code>confirmEnding("He has to give me a new name", "name")</code> should return true.
|
||||
testString: assert(confirmEnding("He has to give me a new name", "name") === true);
|
||||
- text: <code>confirmEnding("Open sesame", "same")</code> should return true.
|
||||
testString: assert(confirmEnding("Open sesame", "same") === true);
|
||||
- text: <code>confirmEnding("Open sesame", "pen")</code> should return false.
|
||||
testString: assert(confirmEnding("Open sesame", "pen") === false);
|
||||
- text: <code>confirmEnding("Open sesame", "game")</code> should return false.
|
||||
testString: assert(confirmEnding("Open sesame", "game") === false);
|
||||
- text: <code>confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain")</code> should return false.
|
||||
testString: assert(confirmEnding("If you want to save our world, you must hurry. We dont know how much longer we can withstand the nothing", "mountain") === false);
|
||||
- text: <code>confirmEnding("Abstraction", "action")</code> should return true.
|
||||
testString: assert(confirmEnding("Abstraction", "action") === true);
|
||||
- text: Do not use the built-in method <code>.endsWith()</code> to solve the challenge.
|
||||
testString: assert(!(/\.endsWith\(.*?\)\s*?;?/.test(code)) && !(/\['endsWith'\]/.test(code)));
|
||||
|
||||
```
|
||||
|
||||
@@ -64,14 +67,17 @@ confirmEnding("Bastian", "n");
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function confirmEnding(str, target) {
|
||||
return str.substring(str.length - target.length) === target;
|
||||
}
|
||||
|
||||
confirmEnding("Bastian", "n");
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: 56533eb9ac21ba0edf2244b3
|
||||
title: Convert Celsius to Fahrenheit
|
||||
challengeType: 1
|
||||
isRequired: true
|
||||
videoUrl: ''
|
||||
forumTopicId: 16806
|
||||
localeTitle: Преобразование Цельсия в Фаренгейт
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Алгоритм преобразования от Цельсия в Фаренгейт - это температура в градусах Цельсия <code>9/5</code> и плюс <code>32</code> . Вам дается переменная <code>celsius</code> представляющая температуру в градусах Цельсия. Используйте переменную <code>fahrenheit</code> уже определена, и назначьте ей температуру Фаренгейта, эквивалентную заданной температуре Цельсия. Используйте вышеупомянутый алгоритм, чтобы помочь преобразовать температуру Цельсия в Фаренгейт. Не беспокойтесь слишком много о функциях и заявлениях о возврате, поскольку они будут рассмотрены в будущих задачах. Пока что используйте только те операторы, которые вы уже узнали. </section>
|
||||
<section id='description'>
|
||||
Алгоритм преобразования от Цельсия в Фаренгейт - это температура в градусах Цельсия <code>9/5</code> и плюс <code>32</code> . Вам дается переменная <code>celsius</code> представляющая температуру в градусах Цельсия. Используйте переменную <code>fahrenheit</code> уже определена, и назначьте ей температуру Фаренгейта, эквивалентную заданной температуре Цельсия. Используйте вышеупомянутый алгоритм, чтобы помочь преобразовать температуру Цельсия в Фаренгейт. Не беспокойтесь слишком много о функциях и заявлениях о возврате, поскольку они будут рассмотрены в будущих задачах. Пока что используйте только те операторы, которые вы уже узнали.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,18 +22,18 @@ localeTitle: Преобразование Цельсия в Фаренгейт
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>convertToF(0)</code> должен возвращать число
|
||||
testString: 'assert(typeof convertToF(0) === "number", "<code>convertToF(0)</code> should return a number");'
|
||||
- text: <code>convertToF(-30)</code> должен возвращать значение <code>-22</code>
|
||||
testString: 'assert(convertToF(-30) === -22, "<code>convertToF(-30)</code> should return a value of <code>-22</code>");'
|
||||
- text: <code>convertToF(-10)</code> должен возвращать значение <code>14</code>
|
||||
testString: 'assert(convertToF(-10) === 14, "<code>convertToF(-10)</code> should return a value of <code>14</code>");'
|
||||
- text: <code>convertToF(0)</code> должно возвращать значение <code>32</code>
|
||||
testString: 'assert(convertToF(0) === 32, "<code>convertToF(0)</code> should return a value of <code>32</code>");'
|
||||
- text: <code>convertToF(20)</code> должно возвращать значение <code>68</code>
|
||||
testString: 'assert(convertToF(20) === 68, "<code>convertToF(20)</code> should return a value of <code>68</code>");'
|
||||
- text: <code>convertToF(30)</code> должен вернуть значение <code>86</code>
|
||||
testString: 'assert(convertToF(30) === 86, "<code>convertToF(30)</code> should return a value of <code>86</code>");'
|
||||
- text: <code>convertToF(0)</code> should return a number
|
||||
testString: assert(typeof convertToF(0) === 'number');
|
||||
- text: <code>convertToF(-30)</code> should return a value of <code>-22</code>
|
||||
testString: assert(convertToF(-30) === -22);
|
||||
- text: <code>convertToF(-10)</code> should return a value of <code>14</code>
|
||||
testString: assert(convertToF(-10) === 14);
|
||||
- text: <code>convertToF(0)</code> should return a value of <code>32</code>
|
||||
testString: assert(convertToF(0) === 32);
|
||||
- text: <code>convertToF(20)</code> should return a value of <code>68</code>
|
||||
testString: assert(convertToF(20) === 68);
|
||||
- text: <code>convertToF(30)</code> should return a value of <code>86</code>
|
||||
testString: assert(convertToF(30) === 86);
|
||||
|
||||
```
|
||||
|
||||
@@ -53,14 +56,19 @@ convertToF(30);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function convertToF(celsius) {
|
||||
let fahrenheit = celsius * 9/5 + 32;
|
||||
|
||||
return fahrenheit;
|
||||
}
|
||||
|
||||
convertToF(30);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: a302f7aae1aa3152a5b413bc
|
||||
title: Factorialize a Number
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16013
|
||||
localeTitle: Факториализация номера
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Верните факториал предоставленного целого числа. Если целое число представлено буквой n, факториал является произведением всех положительных целых чисел, меньших или равных n. Факториалы часто представлены сокращенной нотой <code>n!</code> Например: <code>5! = 1 * 2 * 3 * 4 * 5 = 120</code> В функцию будут <code>5! = 1 * 2 * 3 * 4 * 5 = 120</code> только целые числа, большие или равные нулю. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Верните факториал предоставленного целого числа. Если целое число представлено буквой n, факториал является произведением всех положительных целых чисел, меньших или равных n. Факториалы часто представлены сокращенной нотой <code>n!</code> Например: <code>5! = 1 * 2 * 3 * 4 * 5 = 120</code> В функцию будут <code>5! = 1 * 2 * 3 * 4 * 5 = 120</code> только целые числа, большие или равные нулю. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,16 +22,16 @@ localeTitle: Факториализация номера
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>factorialize(5)</code> должен возвращать число.
|
||||
testString: 'assert(typeof factorialize(5) === "number", "<code>factorialize(5)</code> should return a number.");'
|
||||
- text: <code>factorialize(5)</code> должен вернуть 120.
|
||||
testString: 'assert(factorialize(5) === 120, "<code>factorialize(5)</code> should return 120.");'
|
||||
- text: <code>factorialize(10)</code> должен вернуть 3628800.
|
||||
testString: 'assert(factorialize(10) === 3628800, "<code>factorialize(10)</code> should return 3628800.");'
|
||||
- text: <code>factorialize(20)</code> должен возвращать 2432902008176640000.
|
||||
testString: 'assert(factorialize(20) === 2432902008176640000, "<code>factorialize(20)</code> should return 2432902008176640000.");'
|
||||
- text: <code>factorialize(0)</code> должен возвращать 1.
|
||||
testString: 'assert(factorialize(0) === 1, "<code>factorialize(0)</code> should return 1.");'
|
||||
- text: <code>factorialize(5)</code> should return a number.
|
||||
testString: assert(typeof factorialize(5) === 'number');
|
||||
- text: <code>factorialize(5)</code> should return 120.
|
||||
testString: assert(factorialize(5) === 120);
|
||||
- text: <code>factorialize(10)</code> should return 3628800.
|
||||
testString: assert(factorialize(10) === 3628800);
|
||||
- text: <code>factorialize(20)</code> should return 2432902008176640000.
|
||||
testString: assert(factorialize(20) === 2432902008176640000);
|
||||
- text: <code>factorialize(0)</code> should return 1.
|
||||
testString: assert(factorialize(0) === 1);
|
||||
|
||||
```
|
||||
|
||||
@@ -50,14 +53,17 @@ factorialize(5);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function factorialize(num) {
|
||||
return num < 1 ? 1 : num * factorialize(num - 1);
|
||||
}
|
||||
|
||||
factorialize(5);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: adf08ec01beb4f99fc7a68f2
|
||||
title: Falsy Bouncer
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16014
|
||||
localeTitle: Фальшивый вышибала
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Удалите все значения фальши из массива. Значения фальши в JavaScript - <code>false</code> , <code>null</code> , <code>0</code> , <code>""</code> , <code>undefined</code> и <code>NaN</code> . Подсказка: попробуйте преобразовать каждое значение в логическое. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Удалите все значения фальши из массива. Значения фальши в JavaScript - <code>false</code> , <code>null</code> , <code>0</code> , <code>""</code> , <code>undefined</code> и <code>NaN</code> . Подсказка: попробуйте преобразовать каждое значение в логическое. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,14 +22,14 @@ localeTitle: Фальшивый вышибала
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>bouncer([7, "ate", "", false, 9])</code> должен возвращать <code>[7, "ate", 9]</code> .'
|
||||
testString: 'assert.deepEqual(bouncer([7, "ate", "", false, 9]), [7, "ate", 9], "<code>bouncer([7, "ate", "", false, 9])</code> should return <code>[7, "ate", 9]</code>.");'
|
||||
- text: '<code>bouncer(["a", "b", "c"])</code> должен возвращать <code>["a", "b", "c"]</code> .'
|
||||
testString: 'assert.deepEqual(bouncer(["a", "b", "c"]), ["a", "b", "c"], "<code>bouncer(["a", "b", "c"])</code> should return <code>["a", "b", "c"]</code>.");'
|
||||
- text: '<code>bouncer([false, null, 0, NaN, undefined, ""])</code> должен возвращать <code>[]</code> .'
|
||||
testString: 'assert.deepEqual(bouncer([false, null, 0, NaN, undefined, ""]), [], "<code>bouncer([false, null, 0, NaN, undefined, ""])</code> should return <code>[]</code>.");'
|
||||
- text: '<code>bouncer([1, null, NaN, 2, undefined])</code> должен возвращать <code>[1, 2]</code> .'
|
||||
testString: 'assert.deepEqual(bouncer([1, null, NaN, 2, undefined]), [1, 2], "<code>bouncer([1, null, NaN, 2, undefined])</code> should return <code>[1, 2]</code>.");'
|
||||
- text: <code>bouncer([7, "ate", "", false, 9])</code> should return <code>[7, "ate", 9]</code>.
|
||||
testString: assert.deepEqual(bouncer([7, "ate", "", false, 9]), [7, "ate", 9]);
|
||||
- text: <code>bouncer(["a", "b", "c"])</code> should return <code>["a", "b", "c"]</code>.
|
||||
testString: assert.deepEqual(bouncer(["a", "b", "c"]), ["a", "b", "c"]);
|
||||
- text: <code>bouncer([false, null, 0, NaN, undefined, ""])</code> should return <code>[]</code>.
|
||||
testString: assert.deepEqual(bouncer([false, null, 0, NaN, undefined, ""]), []);
|
||||
- text: <code>bouncer([1, null, NaN, 2, undefined])</code> should return <code>[1, 2]</code>.
|
||||
testString: assert.deepEqual(bouncer([1, null, NaN, 2, undefined]), [1, 2]);
|
||||
|
||||
```
|
||||
|
||||
@@ -49,14 +52,17 @@ bouncer([7, "ate", "", false, 9]);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function bouncer(arr) {
|
||||
return arr.filter(e => e);
|
||||
}
|
||||
|
||||
bouncer([7, "ate", "", false, 9]);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: a26cbbe9ad8655a977e1ceb5
|
||||
title: Find the Longest Word in a String
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16015
|
||||
localeTitle: Найти самое длинное слово в строке
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Верните длину самого длинного слова в предоставленное предложение. Ваш ответ должен быть числом. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Верните длину самого длинного слова в предоставленное предложение. Ваш ответ должен быть числом. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,18 +22,18 @@ localeTitle: Найти самое длинное слово в строке
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>findLongestWordLength("The quick brown fox jumped over the lazy dog")</code> должна вернуть номер.
|
||||
testString: 'assert(typeof findLongestWordLength("The quick brown fox jumped over the lazy dog") === "number", "<code>findLongestWordLength("The quick brown fox jumped over the lazy dog")</code> should return a number.");'
|
||||
- text: <code>findLongestWordLength("The quick brown fox jumped over the lazy dog")</code> должна вернуться 6.
|
||||
testString: 'assert(findLongestWordLength("The quick brown fox jumped over the lazy dog") === 6, "<code>findLongestWordLength("The quick brown fox jumped over the lazy dog")</code> should return 6.");'
|
||||
- text: <code>findLongestWordLength("May the force be with you")</code> должна вернуть 5.
|
||||
testString: 'assert(findLongestWordLength("May the force be with you") === 5, "<code>findLongestWordLength("May the force be with you")</code> should return 5.");'
|
||||
- text: <code>findLongestWordLength("Google do a barrel roll")</code> должен вернуть 6.
|
||||
testString: 'assert(findLongestWordLength("Google do a barrel roll") === 6, "<code>findLongestWordLength("Google do a barrel roll")</code> should return 6.");'
|
||||
- text: <code>findLongestWordLength("What is the average airspeed velocity of an unladen swallow")</code> должна вернуться 8.
|
||||
testString: 'assert(findLongestWordLength("What is the average airspeed velocity of an unladen swallow") === 8, "<code>findLongestWordLength("What is the average airspeed velocity of an unladen swallow")</code> should return 8.");'
|
||||
- text: <code>findLongestWordLength("What if we try a super-long word such as otorhinolaryngology")</code> должно возвратиться 19.
|
||||
testString: 'assert(findLongestWordLength("What if we try a super-long word such as otorhinolaryngology") === 19, "<code>findLongestWordLength("What if we try a super-long word such as otorhinolaryngology")</code> should return 19.");'
|
||||
- text: <code>findLongestWordLength("The quick brown fox jumped over the lazy dog")</code> should return a number.
|
||||
testString: assert(typeof findLongestWordLength("The quick brown fox jumped over the lazy dog") === "number");
|
||||
- text: <code>findLongestWordLength("The quick brown fox jumped over the lazy dog")</code> should return 6.
|
||||
testString: assert(findLongestWordLength("The quick brown fox jumped over the lazy dog") === 6);
|
||||
- text: <code>findLongestWordLength("May the force be with you")</code> should return 5.
|
||||
testString: assert(findLongestWordLength("May the force be with you") === 5);
|
||||
- text: <code>findLongestWordLength("Google do a barrel roll")</code> should return 6.
|
||||
testString: assert(findLongestWordLength("Google do a barrel roll") === 6);
|
||||
- text: <code>findLongestWordLength("What is the average airspeed velocity of an unladen swallow")</code> should return 8.
|
||||
testString: assert(findLongestWordLength("What is the average airspeed velocity of an unladen swallow") === 8);
|
||||
- text: <code>findLongestWordLength("What if we try a super-long word such as otorhinolaryngology")</code> should return 19.
|
||||
testString: assert(findLongestWordLength("What if we try a super-long word such as otorhinolaryngology") === 19);
|
||||
|
||||
```
|
||||
|
||||
@@ -52,14 +55,17 @@ findLongestWordLength("The quick brown fox jumped over the lazy dog");
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function findLongestWordLength(str) {
|
||||
return str.split(' ').sort((a, b) => b.length - a.length)[0].length;
|
||||
}
|
||||
|
||||
findLongestWordLength("The quick brown fox jumped over the lazy dog");
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: a6e40f1041b06c996f7b2406
|
||||
title: Finders Keepers
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16016
|
||||
localeTitle: Finders Keepers
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Создайте функцию, которая просматривает массив (первый аргумент) и возвращает первый элемент в массиве, который проходит тест истины (второй аргумент). Если ни один элемент не проходит тест, возвращайте значение undefined. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Попробуйте подключить программу. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Создайте функцию, которая просматривает массив (первый аргумент) и возвращает первый элемент в массиве, который проходит тест истины (второй аргумент). Если ни один элемент не проходит тест, возвращайте значение undefined. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Попробуйте подключить программу. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,10 +22,10 @@ localeTitle: Finders Keepers
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; })</code> должна вернуть 8.'
|
||||
testString: 'assert.strictEqual(findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; }), 8, "<code>findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; })</code> should return 8.");'
|
||||
- text: '<code>findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; })</code> должен возвращать неопределенный.'
|
||||
testString: 'assert.strictEqual(findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; }), undefined, "<code>findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; })</code> should return undefined.");'
|
||||
- text: <code>findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; })</code> should return 8.
|
||||
testString: assert.strictEqual(findElement([1, 3, 5, 8, 9, 10], function(num) { return num % 2 === 0; }), 8);
|
||||
- text: <code>findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; })</code> should return undefined.
|
||||
testString: assert.strictEqual(findElement([1, 3, 5, 9], function(num) { return num % 2 === 0; }), undefined);
|
||||
|
||||
```
|
||||
|
||||
@@ -45,14 +48,17 @@ findElement([1, 2, 3, 4], num => num % 2 === 0);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function findElement(arr, func) {
|
||||
return arr.filter(func)[0];
|
||||
}
|
||||
|
||||
findElement([1, 2, 3, 4], num => num % 2 === 0);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: af2170cad53daa0770fabdea
|
||||
title: Mutations
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16025
|
||||
localeTitle: Мутации
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Возвращает true, если строка в первом элементе массива содержит все буквы строки во втором элементе массива. Например, <code>["hello", "Hello"]</code> должен возвращать true, потому что все буквы во второй строке присутствуют в первом, игнорирующем случае. Аргументы <code>["hello", "hey"]</code> должны возвращать false, потому что строка "hello" не содержит "y". Наконец, <code>["Alien", "line"]</code> должен возвращать true, потому что все буквы в «строке» присутствуют в «Alien». Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Возвращает true, если строка в первом элементе массива содержит все буквы строки во втором элементе массива. Например, <code>["hello", "Hello"]</code> должен возвращать true, потому что все буквы во второй строке присутствуют в первом, игнорирующем случае. Аргументы <code>["hello", "hey"]</code> должны возвращать false, потому что строка "hello" не содержит "y". Наконец, <code>["Alien", "line"]</code> должен возвращать true, потому что все буквы в «строке» присутствуют в «Alien». Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,24 +22,24 @@ localeTitle: Мутации
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>mutation(["hello", "hey"])</code> должна возвращать false.'
|
||||
testString: 'assert(mutation(["hello", "hey"]) === false, "<code>mutation(["hello", "hey"])</code> should return false.");'
|
||||
- text: '<code>mutation(["hello", "Hello"])</code> должна возвращать true.'
|
||||
testString: 'assert(mutation(["hello", "Hello"]) === true, "<code>mutation(["hello", "Hello"])</code> should return true.");'
|
||||
- text: ''
|
||||
testString: 'assert(mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"]) === true, "<code>mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"])</code> should return true.");'
|
||||
- text: ''
|
||||
testString: 'assert(mutation(["Mary", "Army"]) === true, "<code>mutation(["Mary", "Army"])</code> should return true.");'
|
||||
- text: ''
|
||||
testString: 'assert(mutation(["Mary", "Aarmy"]) === true, "<code>mutation(["Mary", "Aarmy"])</code> should return true.");'
|
||||
- text: ''
|
||||
testString: 'assert(mutation(["Alien", "line"]) === true, "<code>mutation(["Alien", "line"])</code> should return true.");'
|
||||
- text: '<code>mutation(["floor", "for"])</code> должна возвращать true.'
|
||||
testString: 'assert(mutation(["floor", "for"]) === true, "<code>mutation(["floor", "for"])</code> should return true.");'
|
||||
- text: ''
|
||||
testString: 'assert(mutation(["hello", "neo"]) === false, "<code>mutation(["hello", "neo"])</code> should return false.");'
|
||||
- text: '<code>mutation(["voodoo", "no"])</code> возвращает false.'
|
||||
testString: 'assert(mutation(["voodoo", "no"]) === false, "<code>mutation(["voodoo", "no"])</code> should return false.");'
|
||||
- text: <code>mutation(["hello", "hey"])</code> should return false.
|
||||
testString: assert(mutation(["hello", "hey"]) === false);
|
||||
- text: <code>mutation(["hello", "Hello"])</code> should return true.
|
||||
testString: assert(mutation(["hello", "Hello"]) === true);
|
||||
- text: <code>mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"])</code> should return true.
|
||||
testString: assert(mutation(["zyxwvutsrqponmlkjihgfedcba", "qrstu"]) === true);
|
||||
- text: <code>mutation(["Mary", "Army"])</code> should return true.
|
||||
testString: assert(mutation(["Mary", "Army"]) === true);
|
||||
- text: <code>mutation(["Mary", "Aarmy"])</code> should return true.
|
||||
testString: assert(mutation(["Mary", "Aarmy"]) === true);
|
||||
- text: <code>mutation(["Alien", "line"])</code> should return true.
|
||||
testString: assert(mutation(["Alien", "line"]) === true);
|
||||
- text: <code>mutation(["floor", "for"])</code> should return true.
|
||||
testString: assert(mutation(["floor", "for"]) === true);
|
||||
- text: <code>mutation(["hello", "neo"])</code> should return false.
|
||||
testString: assert(mutation(["hello", "neo"]) === false);
|
||||
- text: <code>mutation(["voodoo", "no"])</code> should return false.
|
||||
testString: assert(mutation(["voodoo", "no"]) === false);
|
||||
|
||||
```
|
||||
|
||||
@@ -58,14 +61,21 @@ mutation(["hello", "hey"]);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function mutation(arr) {
|
||||
let hash = Object.create(null);
|
||||
|
||||
arr[0].toLowerCase().split('').forEach(c => hash[c] = true);
|
||||
|
||||
return !arr[1].toLowerCase().split('').filter(c => !hash[c]).length;
|
||||
}
|
||||
|
||||
mutation(["hello", "hey"]);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: afcc8d540bea9ea2669306b6
|
||||
title: Repeat a String Repeat a String
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16041
|
||||
localeTitle: Повторить строку Повторить строку
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Повторите заданную строку <code>str</code> (первый аргумент) для <code>num</code> times (второй аргумент). Верните пустую строку, если <code>num</code> не является положительным числом. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Повторите заданную строку <code>str</code> (первый аргумент) для <code>num</code> times (второй аргумент). Верните пустую строку, если <code>num</code> не является положительным числом. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,20 +22,22 @@ localeTitle: Повторить строку Повторить строку
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>repeatStringNumTimes("*", 3)</code> должен возвращать <code>"***"</code> .'
|
||||
testString: 'assert(repeatStringNumTimes("*", 3) === "***", "<code>repeatStringNumTimes("*", 3)</code> should return <code>"***"</code>.");'
|
||||
- text: ''
|
||||
testString: 'assert(repeatStringNumTimes("abc", 3) === "abcabcabc", "<code>repeatStringNumTimes("abc", 3)</code> should return <code>"abcabcabc"</code>.");'
|
||||
- text: '<code>repeatStringNumTimes("abc", 4)</code> должен возвращать <code>"abcabcabcabc"</code> .'
|
||||
testString: 'assert(repeatStringNumTimes("abc", 4) === "abcabcabcabc", "<code>repeatStringNumTimes("abc", 4)</code> should return <code>"abcabcabcabc"</code>.");'
|
||||
- text: '<code>repeatStringNumTimes("abc", 1)</code> должен возвращать <code>"abc"</code> .'
|
||||
testString: 'assert(repeatStringNumTimes("abc", 1) === "abc", "<code>repeatStringNumTimes("abc", 1)</code> should return <code>"abc"</code>.");'
|
||||
- text: '<code>repeatStringNumTimes("*", 8)</code> должен возвращать <code>"********"</code> .'
|
||||
testString: 'assert(repeatStringNumTimes("*", 8) === "********", "<code>repeatStringNumTimes("*", 8)</code> should return <code>"********"</code>.");'
|
||||
- text: '<code>repeatStringNumTimes("abc", -2)</code> должен возвращать <code>""</code> .'
|
||||
testString: 'assert(repeatStringNumTimes("abc", -2) === "", "<code>repeatStringNumTimes("abc", -2)</code> should return <code>""</code>.");'
|
||||
- text: Нельзя использовать встроенный метод <code>repeat()</code>
|
||||
testString: 'assert(!/\.repeat/g.test(code), "The built-in <code>repeat()</code>-method should not be used");'
|
||||
- text: <code>repeatStringNumTimes("*", 3)</code> should return <code>"***"</code>.
|
||||
testString: assert(repeatStringNumTimes("*", 3) === "***");
|
||||
- text: <code>repeatStringNumTimes("abc", 3)</code> should return <code>"abcabcabc"</code>.
|
||||
testString: assert(repeatStringNumTimes("abc", 3) === "abcabcabc");
|
||||
- text: <code>repeatStringNumTimes("abc", 4)</code> should return <code>"abcabcabcabc"</code>.
|
||||
testString: assert(repeatStringNumTimes("abc", 4) === "abcabcabcabc");
|
||||
- text: <code>repeatStringNumTimes("abc", 1)</code> should return <code>"abc"</code>.
|
||||
testString: assert(repeatStringNumTimes("abc", 1) === "abc");
|
||||
- text: <code>repeatStringNumTimes("*", 8)</code> should return <code>"********"</code>.
|
||||
testString: assert(repeatStringNumTimes("*", 8) === "********");
|
||||
- text: <code>repeatStringNumTimes("abc", -2)</code> should return <code>""</code>.
|
||||
testString: assert(repeatStringNumTimes("abc", -2) === "");
|
||||
- text: The built-in <code>repeat()</code> method should not be used.
|
||||
testString: assert(!/\.repeat/g.test(code));
|
||||
- text: <code>repeatStringNumTimes("abc", 0)</code> should return <code>""</code>.
|
||||
testString: assert(repeatStringNumTimes("abc", 0) === "");
|
||||
|
||||
```
|
||||
|
||||
@@ -55,14 +60,18 @@ repeatStringNumTimes("abc", 3);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function repeatStringNumTimes(str, num) {
|
||||
if (num < 1) return '';
|
||||
return num === 1 ? str : str + repeatStringNumTimes(str, num-1);
|
||||
}
|
||||
|
||||
repeatStringNumTimes("abc", 3);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: a789b3483989747d63b0e427
|
||||
title: Return Largest Numbers in Arrays
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16042
|
||||
localeTitle: Возвращает наибольшие числа в массивах
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Возвращает массив, состоящий из наибольшего числа из каждого предоставленного подматрица. Для простоты предоставленный массив будет содержать ровно 4 поддиапазона. Помните, вы можете перебирать массив с помощью простого цикла и обращаться к каждому члену с синтаксисом массива <code>arr[i]</code> . Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Возвращает массив, состоящий из наибольшего числа из каждого предоставленного подматрица. Для простоты предоставленный массив будет содержать ровно 4 поддиапазона. Помните, вы можете перебирать массив с помощью простого цикла и обращаться к каждому члену с синтаксисом массива <code>arr[i]</code> . Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,14 +22,14 @@ localeTitle: Возвращает наибольшие числа в масси
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]])</code> должны возвращать массив.'
|
||||
testString: 'assert(largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]).constructor === Array, "<code>largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]])</code> should return an array.");'
|
||||
- text: '<code>largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]])</code> должны возвращаться <code>[27, 5, 39, 1001]</code> .'
|
||||
testString: 'assert.deepEqual(largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]), [27, 5, 39, 1001], "<code>largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]])</code> should return <code>[27, 5, 39, 1001]</code>.");'
|
||||
- text: '<code>largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]])</code> должны возвращаться <code>[9, 35, 97, 1000000]</code> .'
|
||||
testString: 'assert.deepEqual(largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]), [9, 35, 97, 1000000], "<code>largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]])</code> should return <code>[9, 35, 97, 1000000]</code>.");'
|
||||
- text: '<code>largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]])</code> должны return <code>[25, 48, 21, -3]</code> .'
|
||||
testString: 'assert.deepEqual(largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]), [25, 48, 21, -3], "<code>largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]])</code> should return <code>[25, 48, 21, -3]</code>.");'
|
||||
- text: <code>largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]])</code> should return an array.
|
||||
testString: assert(largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]).constructor === Array);
|
||||
- text: <code>largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]])</code> should return <code>[27, 5, 39, 1001]</code>.
|
||||
testString: assert.deepEqual(largestOfFour([[13, 27, 18, 26], [4, 5, 1, 3], [32, 35, 37, 39], [1000, 1001, 857, 1]]), [27, 5, 39, 1001]);
|
||||
- text: <code>largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]])</code> should return <code>[9, 35, 97, 1000000]</code>.
|
||||
testString: assert.deepEqual(largestOfFour([[4, 9, 1, 3], [13, 35, 18, 26], [32, 35, 97, 39], [1000000, 1001, 857, 1]]), [9, 35, 97, 1000000]);
|
||||
- text: <code>largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]])</code> should return <code>[25, 48, 21, -3]</code>.
|
||||
testString: assert.deepEqual(largestOfFour([[17, 23, 25, 12], [25, 7, 34, 48], [4, -10, 18, 21], [-72, -3, -17, -10]]), [25, 48, 21, -3]);
|
||||
|
||||
```
|
||||
|
||||
@@ -49,14 +52,17 @@ largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 85
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function largestOfFour(arr) {
|
||||
return arr.map(subArr => Math.max.apply(null, subArr));
|
||||
}
|
||||
|
||||
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: a202eed8fc186c8434cb6d61
|
||||
title: Reverse a String
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16043
|
||||
localeTitle: Обратить строку
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Переверните предоставленную строку. Возможно, вам придется перевернуть строку в массив, прежде чем вы сможете ее отменить. Ваш результат должен быть строкой. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Переверните предоставленную строку. Возможно, вам придется перевернуть строку в массив, прежде чем вы сможете ее отменить. Ваш результат должен быть строкой. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,14 +22,14 @@ localeTitle: Обратить строку
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>reverseString("hello")</code> должен возвращать строку.
|
||||
testString: 'assert(typeof reverseString("hello") === "string", "<code>reverseString("hello")</code> should return a string.");'
|
||||
- text: <code>reverseString("hello")</code> должно стать <code>"olleh"</code> .
|
||||
testString: 'assert(reverseString("hello") === "olleh", "<code>reverseString("hello")</code> should become <code>"olleh"</code>.");'
|
||||
- text: <code>reverseString("Howdy")</code> должен стать <code>"ydwoH"</code> .
|
||||
testString: 'assert(reverseString("Howdy") === "ydwoH", "<code>reverseString("Howdy")</code> should become <code>"ydwoH"</code>.");'
|
||||
- text: <code>reverseString("Greetings from Earth")</code> должен возвращать <code>"htraE morf sgniteerG"</code> .
|
||||
testString: 'assert(reverseString("Greetings from Earth") === "htraE morf sgniteerG", "<code>reverseString("Greetings from Earth")</code> should return <code>"htraE morf sgniteerG"</code>.");'
|
||||
- text: <code>reverseString("hello")</code> should return a string.
|
||||
testString: assert(typeof reverseString("hello") === "string");
|
||||
- text: <code>reverseString("hello")</code> should become <code>"olleh"</code>.
|
||||
testString: assert(reverseString("hello") === "olleh");
|
||||
- text: <code>reverseString("Howdy")</code> should become <code>"ydwoH"</code>.
|
||||
testString: assert(reverseString("Howdy") === "ydwoH");
|
||||
- text: <code>reverseString("Greetings from Earth")</code> should return <code>"htraE morf sgniteerG"</code>.
|
||||
testString: assert(reverseString("Greetings from Earth") === "htraE morf sgniteerG");
|
||||
|
||||
```
|
||||
|
||||
@@ -48,14 +51,17 @@ reverseString("hello");
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function reverseString(str) {
|
||||
return str.split('').reverse().join('');
|
||||
}
|
||||
|
||||
reverseString("hello");
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -4,15 +4,18 @@ title: Slice and Splice
|
||||
isRequired: true
|
||||
isBeta: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 301148
|
||||
localeTitle: Нарезка и сращивание
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Вам даны два массива и индекс. Используйте метод массива <code>slice</code> и <code>splice</code> для копирования каждого элемента первого массива во второй массив по порядку. Начните вставлять элементы в индекс <code>n</code> второго массива. Верните результирующий массив. Входные массивы должны оставаться неизменными после запуска функции. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Вам даны два массива и индекс. Используйте метод массива <code>slice</code> и <code>splice</code> для копирования каждого элемента первого массива во второй массив по порядку. Начните вставлять элементы в индекс <code>n</code> второго массива. Верните результирующий массив. Входные массивы должны оставаться неизменными после запуска функции. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -20,18 +23,18 @@ localeTitle: Нарезка и сращивание
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>frankenSplice([1, 2, 3], [4, 5], 1)</code> должен вернуться <code>[4, 1, 2, 3, 5]</code> .'
|
||||
testString: 'assert.deepEqual(frankenSplice([1, 2, 3], [4, 5], 1), [4, 1, 2, 3, 5], "<code>frankenSplice([1, 2, 3], [4, 5], 1)</code> should return <code>[4, 1, 2, 3, 5]</code>.");'
|
||||
- text: '<code>frankenSplice([1, 2], ["a", "b"], 1)</code> должны возвращать <code>["a", 1, 2, "b"]</code> .'
|
||||
testString: 'assert.deepEqual(frankenSplice(testArr1, testArr2, 1), ["a", 1, 2, "b"], "<code>frankenSplice([1, 2], ["a", "b"], 1)</code> should return <code>["a", 1, 2, "b"]</code>.");'
|
||||
- text: '<code>frankenSplice(["claw", "tentacle"], ["head", "shoulders", "knees", "toes"], 2)</code> должны возвращать <code>["head", "shoulders", "claw", "tentacle", "knees", "toes"]</code> .'
|
||||
testString: 'assert.deepEqual(frankenSplice(["claw", "tentacle"], ["head", "shoulders", "knees", "toes"], 2), ["head", "shoulders", "claw", "tentacle", "knees", "toes"], "<code>frankenSplice(["claw", "tentacle"], ["head", "shoulders", "knees", "toes"], 2)</code> should return <code>["head", "shoulders", "claw", "tentacle", "knees", "toes"]</code>.");'
|
||||
- text: Все элементы из первого массива должны быть добавлены ко второму массиву в исходном порядке.
|
||||
testString: 'assert.deepEqual(frankenSplice([1, 2, 3, 4], [], 0), [1, 2, 3, 4], "All elements from the first array should be added to the second array in their original order.");'
|
||||
- text: Первый массив должен оставаться неизменным после запуска функции.
|
||||
testString: 'assert(testArr1[0] === 1 && testArr1[1] === 2, "The first array should remain the same after the function runs.");'
|
||||
- text: Второй массив должен оставаться неизменным после запуска функции.
|
||||
testString: 'assert(testArr2[0] === "a" && testArr2[1] === "b", "The second array should remain the same after the function runs.");'
|
||||
- text: <code>frankenSplice([1, 2, 3], [4, 5], 1)</code> should return <code>[4, 1, 2, 3, 5]</code>.
|
||||
testString: assert.deepEqual(frankenSplice([1, 2, 3], [4, 5], 1), [4, 1, 2, 3, 5]);
|
||||
- text: <code>frankenSplice([1, 2], ["a", "b"], 1)</code> should return <code>["a", 1, 2, "b"]</code>.
|
||||
testString: assert.deepEqual(frankenSplice(testArr1, testArr2, 1), ["a", 1, 2, "b"]);
|
||||
- text: <code>frankenSplice(["claw", "tentacle"], ["head", "shoulders", "knees", "toes"], 2)</code> should return <code>["head", "shoulders", "claw", "tentacle", "knees", "toes"]</code>.
|
||||
testString: assert.deepEqual(frankenSplice(["claw", "tentacle"], ["head", "shoulders", "knees", "toes"], 2), ["head", "shoulders", "claw", "tentacle", "knees", "toes"]);
|
||||
- text: All elements from the first array should be added to the second array in their original order.
|
||||
testString: assert.deepEqual(frankenSplice([1, 2, 3, 4], [], 0), [1, 2, 3, 4]);
|
||||
- text: The first array should remain the same after the function runs.
|
||||
testString: assert(testArr1[0] === 1 && testArr1[1] === 2);
|
||||
- text: The second array should remain the same after the function runs.
|
||||
testString: assert(testArr2[0] === "a" && testArr2[1] === "b");
|
||||
|
||||
```
|
||||
|
||||
@@ -54,12 +57,13 @@ frankenSplice([1, 2, 3], [4, 5, 6], 1);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
### After Test
|
||||
### After Tests
|
||||
<div id='js-teardown'>
|
||||
|
||||
```js
|
||||
console.info('after the test');
|
||||
let testArr1 = [1, 2];
|
||||
let testArr2 = ["a", "b"];
|
||||
|
||||
```
|
||||
|
||||
</div>
|
||||
@@ -70,6 +74,16 @@ console.info('after the test');
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function frankenSplice(arr1, arr2, n) {
|
||||
// It's alive. It's alive!
|
||||
let result = arr2.slice();
|
||||
for (let i = 0; i < arr1.length; i++) {
|
||||
result.splice(n+i, 0, arr1[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
frankenSplice([1, 2, 3], [4, 5], 1);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: ab6137d4e35944e21037b769
|
||||
title: Title Case a Sentence
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16088
|
||||
localeTitle: Название Случайное предложение
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Верните предоставленную строку с первой буквой каждого слова, заглавными. Убедитесь, что остальная часть слова находится в нижнем регистре. Для целей этого упражнения вы также должны использовать прописные слова, такие как «the» и «of». Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Верните предоставленную строку с первой буквой каждого слова, заглавными. Убедитесь, что остальная часть слова находится в нижнем регистре. Для целей этого упражнения вы также должны использовать прописные слова, такие как «the» и «of». Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,14 +22,14 @@ localeTitle: Название Случайное предложение
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>titleCase("I'm a little tea pot")</code> должен возвращать строку.'
|
||||
testString: 'assert(typeof titleCase("I"m a little tea pot") === "string", "<code>titleCase("I'm a little tea pot")</code> should return a string.");'
|
||||
- text: '<code>titleCase("I'm a little tea pot")</code> должен вернуться, <code>I'm A Little Tea Pot</code> .'
|
||||
testString: 'assert(titleCase("I"m a little tea pot") === "I"m A Little Tea Pot", "<code>titleCase("I'm a little tea pot")</code> should return <code>I'm A Little Tea Pot</code>.");'
|
||||
- text: <code>titleCase("sHoRt AnD sToUt")</code> должен возвращать <code>Short And Stout</code> .
|
||||
testString: 'assert(titleCase("sHoRt AnD sToUt") === "Short And Stout", "<code>titleCase("sHoRt AnD sToUt")</code> should return <code>Short And Stout</code>.");'
|
||||
- text: ''
|
||||
testString: 'assert(titleCase("HERE IS MY HANDLE HERE IS MY SPOUT") === "Here Is My Handle Here Is My Spout", "<code>titleCase("HERE IS MY HANDLE HERE IS MY SPOUT")</code> should return <code>Here Is My Handle Here Is My Spout</code>.");'
|
||||
- text: <code>titleCase("I'm a little tea pot")</code> should return a string.
|
||||
testString: assert(typeof titleCase("I'm a little tea pot") === "string");
|
||||
- text: <code>titleCase("I'm a little tea pot")</code> should return <code>I'm A Little Tea Pot</code>.
|
||||
testString: assert(titleCase("I'm a little tea pot") === "I'm A Little Tea Pot");
|
||||
- text: <code>titleCase("sHoRt AnD sToUt")</code> should return <code>Short And Stout</code>.
|
||||
testString: assert(titleCase("sHoRt AnD sToUt") === "Short And Stout");
|
||||
- text: <code>titleCase("HERE IS MY HANDLE HERE IS MY SPOUT")</code> should return <code>Here Is My Handle Here Is My Spout</code>.
|
||||
testString: assert(titleCase("HERE IS MY HANDLE HERE IS MY SPOUT") === "Here Is My Handle Here Is My Spout");
|
||||
|
||||
```
|
||||
|
||||
@@ -48,14 +51,17 @@ titleCase("I'm a little tea pot");
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function titleCase(str) {
|
||||
return str.split(' ').map(word => word.charAt(0).toUpperCase() + word.substring(1).toLowerCase()).join(' ');
|
||||
}
|
||||
|
||||
titleCase("I'm a little tea pot");
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: ac6993d51946422351508a41
|
||||
title: Truncate a String
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16089
|
||||
localeTitle: Усекать строку
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Усечь строку (первый аргумент), если она длиннее заданной максимальной длины строки (второй аргумент). Возвращает усеченную строку с <code>...</code> окончанием. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Усечь строку (первый аргумент), если она длиннее заданной максимальной длины строки (второй аргумент). Возвращает усеченную строку с <code>...</code> окончанием. Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,18 +22,18 @@ localeTitle: Усекать строку
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>truncateString("A-tisket a-tasket A green and yellow basket", 8)</code> должен вернуть «A-tisket ...».'
|
||||
testString: 'assert(truncateString("A-tisket a-tasket A green and yellow basket", 8) === "A-tisket...", "<code>truncateString("A-tisket a-tasket A green and yellow basket", 8)</code> should return "A-tisket...".");'
|
||||
- text: '<code>truncateString("Peter Piper picked a peck of pickled peppers", 11)</code> должен вернуться «Питер Пайпер ...».'
|
||||
testString: 'assert(truncateString("Peter Piper picked a peck of pickled peppers", 11) === "Peter Piper...", "<code>truncateString("Peter Piper picked a peck of pickled peppers", 11)</code> should return "Peter Piper...".");'
|
||||
- text: '<code>truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length)</code> должна возвращать «A-tisket a-tasket« Зеленая и желтая корзина ».'
|
||||
testString: 'assert(truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length) === "A-tisket a-tasket A green and yellow basket", "<code>truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length)</code> should return "A-tisket a-tasket A green and yellow basket".");'
|
||||
- text: '<code>truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2)</code> должна возвращать «A-tisket a-tasket Зеленая и желтая корзина».'
|
||||
testString: 'assert(truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2) === "A-tisket a-tasket A green and yellow basket", "<code>truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2)</code> should return "A-tisket a-tasket A green and yellow basket".");'
|
||||
- text: '<code>truncateString("A-", 1)</code> должен возвращать «A ...».'
|
||||
testString: 'assert(truncateString("A-", 1) === "A...", "<code>truncateString("A-", 1)</code> should return "A...".");'
|
||||
- text: '<code>truncateString("Absolutely Longer", 2)</code> должен возвращать «Ab ...».'
|
||||
testString: 'assert(truncateString("Absolutely Longer", 2) === "Ab...", "<code>truncateString("Absolutely Longer", 2)</code> should return "Ab...".");'
|
||||
- text: <code>truncateString("A-tisket a-tasket A green and yellow basket", 8)</code> should return "A-tisket...".
|
||||
testString: assert(truncateString("A-tisket a-tasket A green and yellow basket", 8) === "A-tisket...");
|
||||
- text: <code>truncateString("Peter Piper picked a peck of pickled peppers", 11)</code> should return "Peter Piper...".
|
||||
testString: assert(truncateString("Peter Piper picked a peck of pickled peppers", 11) === "Peter Piper...");
|
||||
- text: <code>truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length)</code> should return "A-tisket a-tasket A green and yellow basket".
|
||||
testString: assert(truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length) === "A-tisket a-tasket A green and yellow basket");
|
||||
- text: <code>truncateString("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length + 2)</code> should return "A-tisket a-tasket A green and yellow basket".
|
||||
testString: assert(truncateString('A-tisket a-tasket A green and yellow basket', 'A-tisket a-tasket A green and yellow basket'.length + 2) === 'A-tisket a-tasket A green and yellow basket');
|
||||
- text: <code>truncateString("A-", 1)</code> should return "A...".
|
||||
testString: assert(truncateString("A-", 1) === "A...");
|
||||
- text: <code>truncateString("Absolutely Longer", 2)</code> should return "Ab...".
|
||||
testString: assert(truncateString("Absolutely Longer", 2) === "Ab...");
|
||||
|
||||
```
|
||||
|
||||
@@ -53,14 +56,21 @@ truncateString("A-tisket a-tasket A green and yellow basket", 8);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function truncateString(str, num) {
|
||||
if (num >= str.length) {
|
||||
return str;
|
||||
}
|
||||
|
||||
return str.slice(0, num) + '...';
|
||||
}
|
||||
|
||||
truncateString("A-tisket a-tasket A green and yellow basket", 8);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -3,15 +3,18 @@ id: a24c1a4622e3c05097f71d67
|
||||
title: Where do I Belong
|
||||
isRequired: true
|
||||
challengeType: 5
|
||||
videoUrl: ''
|
||||
forumTopicId: 16094
|
||||
localeTitle: Где я живу
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Возвратите наименьший индекс, по которому значение (второй аргумент) должно быть вставлено в массив (первый аргумент) после его сортировки. Возвращаемое значение должно быть числом. Например, <code>getIndexToIns([1,2,3,4], 1.5)</code> должен возвращать <code>1</code> потому что он больше <code>1</code> (индекс 0), но меньше <code>2</code> (индекс 1). Аналогично, <code>getIndexToIns([20,3,5], 19)</code> должен вернуть <code>2</code> потому что, как только массив будет отсортирован, он будет выглядеть как <code>[3,5,20]</code> а <code>19</code> меньше <code>20</code> (индекс 2) и больше <code>5</code> ( индекс 1). Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код. </section>
|
||||
<section id='description'>
|
||||
Возвратите наименьший индекс, по которому значение (второй аргумент) должно быть вставлено в массив (первый аргумент) после его сортировки. Возвращаемое значение должно быть числом. Например, <code>getIndexToIns([1,2,3,4], 1.5)</code> должен возвращать <code>1</code> потому что он больше <code>1</code> (индекс 0), но меньше <code>2</code> (индекс 1). Аналогично, <code>getIndexToIns([20,3,5], 19)</code> должен вернуть <code>2</code> потому что, как только массив будет отсортирован, он будет выглядеть как <code>[3,5,20]</code> а <code>19</code> меньше <code>20</code> (индекс 2) и больше <code>5</code> ( индекс 1). Не забудьте использовать <a href="http://forum.freecodecamp.org/t/how-to-get-help-when-you-are-stuck/19514" target="_blank">Read-Search-Ask,</a> если вы застряли. Напишите свой собственный код.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions">
|
||||
<section id='instructions'>
|
||||
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
@@ -19,38 +22,38 @@ localeTitle: Где я живу
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>getIndexToIns([10, 20, 30, 40, 50], 35)</code> должен вернуть <code>3</code> .'
|
||||
testString: 'assert(getIndexToIns([10, 20, 30, 40, 50], 35) === 3, "<code>getIndexToIns([10, 20, 30, 40, 50], 35)</code> should return <code>3</code>.");'
|
||||
- text: '<code>getIndexToIns([10, 20, 30, 40, 50], 35)</code> должен возвращать число.'
|
||||
testString: 'assert(typeof(getIndexToIns([10, 20, 30, 40, 50], 35)) === "number", "<code>getIndexToIns([10, 20, 30, 40, 50], 35)</code> should return a number.");'
|
||||
- text: '<code>getIndexToIns([10, 20, 30, 40, 50], 30)</code> должен возвращать <code>2</code> .'
|
||||
testString: 'assert(getIndexToIns([10, 20, 30, 40, 50], 30) === 2, "<code>getIndexToIns([10, 20, 30, 40, 50], 30)</code> should return <code>2</code>.");'
|
||||
- text: '<code>getIndexToIns([10, 20, 30, 40, 50], 30)</code> должен возвращать число.'
|
||||
testString: 'assert(typeof(getIndexToIns([10, 20, 30, 40, 50], 30)) === "number", "<code>getIndexToIns([10, 20, 30, 40, 50], 30)</code> should return a number.");'
|
||||
- text: '<code>getIndexToIns([40, 60], 50)</code> должен возвращать <code>1</code> .'
|
||||
testString: 'assert(getIndexToIns([40, 60], 50) === 1, "<code>getIndexToIns([40, 60], 50)</code> should return <code>1</code>.");'
|
||||
- text: '<code>getIndexToIns([40, 60], 50)</code> должен возвращать число.'
|
||||
testString: 'assert(typeof(getIndexToIns([40, 60], 50)) === "number", "<code>getIndexToIns([40, 60], 50)</code> should return a number.");'
|
||||
- text: '<code>getIndexToIns([3, 10, 5], 3)</code> должен вернуть <code>0</code> .'
|
||||
testString: 'assert(getIndexToIns([3, 10, 5], 3) === 0, "<code>getIndexToIns([3, 10, 5], 3)</code> should return <code>0</code>.");'
|
||||
- text: '<code>getIndexToIns([3, 10, 5], 3)</code> должен возвращать число.'
|
||||
testString: 'assert(typeof(getIndexToIns([3, 10, 5], 3)) === "number", "<code>getIndexToIns([3, 10, 5], 3)</code> should return a number.");'
|
||||
- text: '<code>getIndexToIns([5, 3, 20, 3], 5)</code> должен вернуть <code>2</code> .'
|
||||
testString: 'assert(getIndexToIns([5, 3, 20, 3], 5) === 2, "<code>getIndexToIns([5, 3, 20, 3], 5)</code> should return <code>2</code>.");'
|
||||
- text: '<code>getIndexToIns([5, 3, 20, 3], 5)</code> должен возвращать число.'
|
||||
testString: 'assert(typeof(getIndexToIns([5, 3, 20, 3], 5)) === "number", "<code>getIndexToIns([5, 3, 20, 3], 5)</code> should return a number.");'
|
||||
- text: '<code>getIndexToIns([2, 20, 10], 19)</code> должен возвращать <code>2</code> .'
|
||||
testString: 'assert(getIndexToIns([2, 20, 10], 19) === 2, "<code>getIndexToIns([2, 20, 10], 19)</code> should return <code>2</code>.");'
|
||||
- text: '<code>getIndexToIns([2, 20, 10], 19)</code> должен возвращать число.'
|
||||
testString: 'assert(typeof(getIndexToIns([2, 20, 10], 19)) === "number", "<code>getIndexToIns([2, 20, 10], 19)</code> should return a number.");'
|
||||
- text: '<code>getIndexToIns([2, 5, 10], 15)</code> должен вернуть <code>3</code> .'
|
||||
testString: 'assert(getIndexToIns([2, 5, 10], 15) === 3, "<code>getIndexToIns([2, 5, 10], 15)</code> should return <code>3</code>.");'
|
||||
- text: '<code>getIndexToIns([2, 5, 10], 15)</code> должен возвращать число.'
|
||||
testString: 'assert(typeof(getIndexToIns([2, 5, 10], 15)) === "number", "<code>getIndexToIns([2, 5, 10], 15)</code> should return a number.");'
|
||||
- text: '<code>getIndexToIns([], 1)</code> должен возвращать <code>0</code> .'
|
||||
testString: 'assert(getIndexToIns([], 1) === 0, "<code>getIndexToIns([], 1)</code> should return <code>0</code>.");'
|
||||
- text: '<code>getIndexToIns([], 1)</code> должен возвращать число.'
|
||||
testString: 'assert(typeof(getIndexToIns([], 1)) === "number", "<code>getIndexToIns([], 1)</code> should return a number.");'
|
||||
- text: <code>getIndexToIns([10, 20, 30, 40, 50], 35)</code> should return <code>3</code>.
|
||||
testString: assert(getIndexToIns([10, 20, 30, 40, 50], 35) === 3);
|
||||
- text: <code>getIndexToIns([10, 20, 30, 40, 50], 35)</code> should return a number.
|
||||
testString: assert(typeof(getIndexToIns([10, 20, 30, 40, 50], 35)) === "number");
|
||||
- text: <code>getIndexToIns([10, 20, 30, 40, 50], 30)</code> should return <code>2</code>.
|
||||
testString: assert(getIndexToIns([10, 20, 30, 40, 50], 30) === 2);
|
||||
- text: <code>getIndexToIns([10, 20, 30, 40, 50], 30)</code> should return a number.
|
||||
testString: assert(typeof(getIndexToIns([10, 20, 30, 40, 50], 30)) === "number");
|
||||
- text: <code>getIndexToIns([40, 60], 50)</code> should return <code>1</code>.
|
||||
testString: assert(getIndexToIns([40, 60], 50) === 1);
|
||||
- text: <code>getIndexToIns([40, 60], 50)</code> should return a number.
|
||||
testString: assert(typeof(getIndexToIns([40, 60], 50)) === "number");
|
||||
- text: <code>getIndexToIns([3, 10, 5], 3)</code> should return <code>0</code>.
|
||||
testString: assert(getIndexToIns([3, 10, 5], 3) === 0);
|
||||
- text: <code>getIndexToIns([3, 10, 5], 3)</code> should return a number.
|
||||
testString: assert(typeof(getIndexToIns([3, 10, 5], 3)) === "number");
|
||||
- text: <code>getIndexToIns([5, 3, 20, 3], 5)</code> should return <code>2</code>.
|
||||
testString: assert(getIndexToIns([5, 3, 20, 3], 5) === 2);
|
||||
- text: <code>getIndexToIns([5, 3, 20, 3], 5)</code> should return a number.
|
||||
testString: assert(typeof(getIndexToIns([5, 3, 20, 3], 5)) === "number");
|
||||
- text: <code>getIndexToIns([2, 20, 10], 19)</code> should return <code>2</code>.
|
||||
testString: assert(getIndexToIns([2, 20, 10], 19) === 2);
|
||||
- text: <code>getIndexToIns([2, 20, 10], 19)</code> should return a number.
|
||||
testString: assert(typeof(getIndexToIns([2, 20, 10], 19)) === "number");
|
||||
- text: <code>getIndexToIns([2, 5, 10], 15)</code> should return <code>3</code>.
|
||||
testString: assert(getIndexToIns([2, 5, 10], 15) === 3);
|
||||
- text: <code>getIndexToIns([2, 5, 10], 15)</code> should return a number.
|
||||
testString: assert(typeof(getIndexToIns([2, 5, 10], 15)) === "number");
|
||||
- text: <code>getIndexToIns([], 1)</code> should return <code>0</code>.
|
||||
testString: assert(getIndexToIns([], 1) === 0);
|
||||
- text: <code>getIndexToIns([], 1)</code> should return a number.
|
||||
testString: assert(typeof(getIndexToIns([], 1)) === "number");
|
||||
|
||||
```
|
||||
|
||||
@@ -73,14 +76,25 @@ getIndexToIns([40, 60], 50);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function getIndexToIns(arr, num) {
|
||||
arr = arr.sort((a, b) => a - b);
|
||||
|
||||
for (let i = 0; i < arr.length; i++) {
|
||||
if (arr[i] >= num) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return arr.length;
|
||||
}
|
||||
|
||||
getIndexToIns([40, 60], 50);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,29 +2,33 @@
|
||||
id: 5a661e0f1068aca922b3ef17
|
||||
title: Access an Array's Contents Using Bracket Notation
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301149
|
||||
localeTitle: Доступ к содержимому массива с использованием скобок
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Основополагающей особенностью любой структуры данных является, конечно же, способность не только хранить данные, но и получать эти данные по команде. Итак, теперь, когда мы научились создавать массив, давайте начнем думать о том, как мы можем получить доступ к информации этого массива. Когда мы определяем простой массив, как показано ниже, в нем есть 3 элемента: <blockquote> пусть ourArray = ["a", "b", "c"]; </blockquote> В массиве каждый элемент массива имеет <dfn>индекс</dfn> . Этот показатель удваивается как позиция этого элемента в массиве и как вы его ссылаетесь. Однако важно отметить, что массивы JavaScript <dfn>ноль-индексируются</dfn> , что означает, что первый элемент массива находится в <em><strong>нулевом</strong></em> положении, а не в первом. Чтобы получить элемент из массива, мы можем заключить индекс в скобки и добавить его в конец массива или, более часто, к переменной, которая ссылается на объект массива. Это называется <dfn>скобкой</dfn> . Например, если мы хотим получить <code>"a"</code> из <code>ourArray</code> и назначить его переменной, мы можем сделать это со следующим кодом: <blockquote> let ourVariable = ourArray [0]; <br> // ourVariable равно "a" </blockquote> Помимо доступа к значению, связанному с индексом, вы также можете <em>установить</em> индекс в значение с использованием той же записи: <blockquote> ourArray [1] = "not b больше"; <br> // ourArray теперь равен ["a", "not b больше", "c"]; </blockquote> Используя нотацию с помощью скобок, мы теперь перезагружаем элемент с индексом 1 от <code>"b"</code> , до <code>"not b anymore"</code> . </section>
|
||||
<section id='description'>
|
||||
Основополагающей особенностью любой структуры данных является, конечно же, способность не только хранить данные, но и получать эти данные по команде. Итак, теперь, когда мы научились создавать массив, давайте начнем думать о том, как мы можем получить доступ к информации этого массива. Когда мы определяем простой массив, как показано ниже, в нем есть 3 элемента: <blockquote> пусть ourArray = ["a", "b", "c"]; </blockquote> В массиве каждый элемент массива имеет <dfn>индекс</dfn> . Этот показатель удваивается как позиция этого элемента в массиве и как вы его ссылаетесь. Однако важно отметить, что массивы JavaScript <dfn>ноль-индексируются</dfn> , что означает, что первый элемент массива находится в <em><strong>нулевом</strong></em> положении, а не в первом. Чтобы получить элемент из массива, мы можем заключить индекс в скобки и добавить его в конец массива или, более часто, к переменной, которая ссылается на объект массива. Это называется <dfn>скобкой</dfn> . Например, если мы хотим получить <code>"a"</code> из <code>ourArray</code> и назначить его переменной, мы можем сделать это со следующим кодом: <blockquote> let ourVariable = ourArray [0]; <br> // ourVariable равно "a" </blockquote> Помимо доступа к значению, связанному с индексом, вы также можете <em>установить</em> индекс в значение с использованием той же записи: <blockquote> ourArray [1] = "not b больше"; <br> // ourArray теперь равен ["a", "not b больше", "c"]; </blockquote> Используя нотацию с помощью скобок, мы теперь перезагружаем элемент с индексом 1 от <code>"b"</code> , до <code>"not b anymore"</code> .
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Чтобы завершить эту задачу, установите вторую позицию (индекс <code>1</code> ) <code>myArray</code> на все, что вы хотите, помимо <code>"b"</code> . </section>
|
||||
<section id='instructions'>
|
||||
Чтобы завершить эту задачу, установите вторую позицию (индекс <code>1</code> ) <code>myArray</code> на все, что вы хотите, помимо <code>"b"</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>myArray[0]</code> равно <code>"a"</code>'
|
||||
testString: 'assert.strictEqual(myArray[0], "a", "<code>myArray[0]</code> is equal to <code>"a"</code>");'
|
||||
- text: '<code>myArray[1]</code> больше не установлен на <code>"b"</code>'
|
||||
testString: 'assert.notStrictEqual(myArray[1], "b", "<code>myArray[1]</code> is no longer set to <code>"b"</code>");'
|
||||
- text: '<code>myArray[2]</code> равен <code>"c"</code>'
|
||||
testString: 'assert.strictEqual(myArray[2], "c", "<code>myArray[2]</code> is equal to <code>"c"</code>");'
|
||||
- text: ''
|
||||
testString: 'assert.strictEqual(myArray[3], "d", "<code>myArray[3]</code> is equal to <code>"d"</code>");'
|
||||
- text: <code>myArray[0]</code> is equal to <code>"a"</code>
|
||||
testString: assert.strictEqual(myArray[0], "a");
|
||||
- text: <code>myArray[1]</code> is no longer set to <code>"b"</code>
|
||||
testString: assert.notStrictEqual(myArray[1], "b");
|
||||
- text: <code>myArray[2]</code> is equal to <code>"c"</code>
|
||||
testString: assert.strictEqual(myArray[2], "c");
|
||||
- text: <code>myArray[3]</code> is equal to <code>"d"</code>
|
||||
testString: assert.strictEqual(myArray[3], "d");
|
||||
|
||||
```
|
||||
|
||||
@@ -46,8 +50,6 @@ console.log(myArray);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
@@ -55,5 +57,8 @@ console.log(myArray);
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let myArray = ["a", "b", "c", "d"];
|
||||
myArray[1] = "e";
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,31 +2,35 @@
|
||||
id: 587d7b7c367417b2b2512b1a
|
||||
title: Access Property Names with Bracket Notation
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301150
|
||||
localeTitle: Доступ к именам объектов с обозначением скобок
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> В первом вызове объекта мы упоминали использование нотации в виде скобок как способ доступа к значениям свойств с использованием оценки переменной. Например, представьте, что наш <code>foods</code> объект используется в программе для кассового аппарата супермаркета. У нас есть функция , которая устанавливает <code>selectedFood</code> и мы хотим , чтобы проверить наши <code>foods</code> объекта на наличие этой пищи. Это может выглядеть так: <blockquote> let selectedFood = getCurrentFood (scannedItem); <br> пусть инвентарь = продукты питания [selectedFood]; </blockquote> Этот код будет оценивать значение, хранящееся в переменной <code>selectedFood</code> и возвращать значение этого ключа в файле <code>foods</code> или <code>undefined</code> если оно отсутствует. Обозначение скобок очень полезно, поскольку иногда свойства объекта неизвестны до выполнения, или нам нужно получить доступ к ним более динамичным способом. </section>
|
||||
<section id='description'>
|
||||
В первом вызове объекта мы упоминали использование нотации в виде скобок как способ доступа к значениям свойств с использованием оценки переменной. Например, представьте, что наш <code>foods</code> объект используется в программе для кассового аппарата супермаркета. У нас есть функция , которая устанавливает <code>selectedFood</code> и мы хотим , чтобы проверить наши <code>foods</code> объекта на наличие этой пищи. Это может выглядеть так: <blockquote> let selectedFood = getCurrentFood (scannedItem); <br> пусть инвентарь = продукты питания [selectedFood]; </blockquote> Этот код будет оценивать значение, хранящееся в переменной <code>selectedFood</code> и возвращать значение этого ключа в файле <code>foods</code> или <code>undefined</code> если оно отсутствует. Обозначение скобок очень полезно, поскольку иногда свойства объекта неизвестны до выполнения, или нам нужно получить доступ к ним более динамичным способом.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию <code>checkInventory</code> , которая получает отсканированный элемент в качестве аргумента. Верните текущее значение ключа <code>scannedItem</code> в объект <code>foods</code> . Вы можете предположить, что в качестве аргумента для <code>checkInventory</code> будут предоставлены только действительные ключи. </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию <code>checkInventory</code> , которая получает отсканированный элемент в качестве аргумента. Верните текущее значение ключа <code>scannedItem</code> в объект <code>foods</code> . Вы можете предположить, что в качестве аргумента для <code>checkInventory</code> будут предоставлены только действительные ключи.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>checkInventory</code> - это функция
|
||||
testString: 'assert.strictEqual(typeof checkInventory, "function", "<code>checkInventory</code> is a function");'
|
||||
- text: 'Объект <code>foods</code> должен иметь только следующие пары ключ-значение: <code>apples: 25</code> , <code>oranges: 32</code> , <code>plums: 28</code> , <code>bananas: 13</code> , <code>grapes: 35</code> , <code>strawberries: 27</code>'
|
||||
testString: 'assert.deepEqual(foods, {apples: 25, oranges: 32, plums: 28, bananas: 13, grapes: 35, strawberries: 27}, "The <code>foods</code> object should have only the following key-value pairs: <code>apples: 25</code>, <code>oranges: 32</code>, <code>plums: 28</code>, <code>bananas: 13</code>, <code>grapes: 35</code>, <code>strawberries: 27</code>");'
|
||||
- text: <code>checkInventory("apples")</code> должен вернуть <code>25</code>
|
||||
testString: 'assert.strictEqual(checkInventory("apples"), 25, "<code>checkInventory("apples")</code> should return <code>25</code>");'
|
||||
- text: <code>checkInventory("bananas")</code> должен вернуть <code>13</code>
|
||||
testString: 'assert.strictEqual(checkInventory("bananas"), 13, "<code>checkInventory("bananas")</code> should return <code>13</code>");'
|
||||
- text: <code>checkInventory("strawberries")</code> должна вернуть <code>27</code>
|
||||
testString: 'assert.strictEqual(checkInventory("strawberries"), 27, "<code>checkInventory("strawberries")</code> should return <code>27</code>");'
|
||||
- text: <code>checkInventory</code> is a function
|
||||
testString: assert.strictEqual(typeof checkInventory, 'function');
|
||||
- text: 'The <code>foods</code> object should have only the following key-value pairs: <code>apples: 25</code>, <code>oranges: 32</code>, <code>plums: 28</code>, <code>bananas: 13</code>, <code>grapes: 35</code>, <code>strawberries: 27</code>'
|
||||
testString: 'assert.deepEqual(foods, {apples: 25, oranges: 32, plums: 28, bananas: 13, grapes: 35, strawberries: 27});'
|
||||
- text: <code>checkInventory("apples")</code> should return <code>25</code>
|
||||
testString: assert.strictEqual(checkInventory('apples'), 25);
|
||||
- text: <code>checkInventory("bananas")</code> should return <code>13</code>
|
||||
testString: assert.strictEqual(checkInventory('bananas'), 13);
|
||||
- text: <code>checkInventory("strawberries")</code> should return <code>27</code>
|
||||
testString: assert.strictEqual(checkInventory('strawberries'), 27);
|
||||
|
||||
```
|
||||
|
||||
@@ -60,8 +64,6 @@ console.log(checkInventory("apples"));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
@@ -69,5 +71,18 @@ console.log(checkInventory("apples"));
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let foods = {
|
||||
apples: 25,
|
||||
oranges: 32,
|
||||
plums: 28,
|
||||
bananas: 13,
|
||||
grapes: 35,
|
||||
strawberries: 27
|
||||
};
|
||||
|
||||
function checkInventory(scannedItem) {
|
||||
return foods[scannedItem];
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,27 +2,31 @@
|
||||
id: 587d78b2367417b2b2512b0e
|
||||
title: Add Items to an Array with push() and unshift()
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301151
|
||||
localeTitle: Добавление элементов в массив с помощью push () и unshift ()
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Длина массива, как и типы данных, которые она может содержать, не является фиксированной. Массивы могут быть определены с длиной любого количества элементов, и элементы могут быть добавлены или удалены с течением времени; другими словами, массивы являются <dfn>изменяемыми</dfn> . В этой задаче мы рассмотрим два метода, с помощью которых мы можем программным образом модифицировать массив: <code>Array.push()</code> и <code>Array.unshift()</code> . Оба метода принимают один или несколько элементов в качестве параметров и добавляют эти элементы в массив, на который вызывается метод; метод <code>push()</code> добавляет элементы в конец массива, а <code>unshift()</code> добавляет элементы в начало. Рассмотрим следующее: <blockquote> пусть двадцать Три = 'XXIII'; <br> let romanNumerals = ['XXI', 'XXII']; <br><br> romanNumerals.unshift ('XIX', 'XX'); <br> // теперь равно ['XIX', 'XX', 'XXI', 'XXII'] <br><br> romanNumerals.push (twentyThree); <br> // теперь равно ['XIX', 'XX', 'XXI', 'XXII', 'XXIII'] Обратите внимание, что мы также можем передавать переменные, что позволяет нам еще большую гибкость в динамическом изменении данных нашего массива. </blockquote></section>
|
||||
<section id='description'>
|
||||
Длина массива, как и типы данных, которые она может содержать, не является фиксированной. Массивы могут быть определены с длиной любого количества элементов, и элементы могут быть добавлены или удалены с течением времени; другими словами, массивы являются <dfn>изменяемыми</dfn> . В этой задаче мы рассмотрим два метода, с помощью которых мы можем программным образом модифицировать массив: <code>Array.push()</code> и <code>Array.unshift()</code> . Оба метода принимают один или несколько элементов в качестве параметров и добавляют эти элементы в массив, на который вызывается метод; метод <code>push()</code> добавляет элементы в конец массива, а <code>unshift()</code> добавляет элементы в начало. Рассмотрим следующее: <blockquote> пусть двадцать Три = 'XXIII'; <br> let romanNumerals = ['XXI', 'XXII']; <br><br> romanNumerals.unshift ('XIX', 'XX'); <br> // теперь равно ['XIX', 'XX', 'XXI', 'XXII'] <br><br> romanNumerals.push (twentyThree); <br> // теперь равно ['XIX', 'XX', 'XXI', 'XXII', 'XXIII'] Обратите внимание, что мы также можем передавать переменные, что позволяет нам еще большую гибкость в динамическом изменении данных нашего массива. </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию, <code>mixedNumbers</code> , которую мы передаем массивом в качестве аргумента. Измените функцию, используя <code>push()</code> и <code>unshift()</code> чтобы добавить <code>'I', 2, 'three'</code> в начало массива и <code>7, 'VIII', 9</code> до конца, чтобы возвращаемый массив содержал представления чисел 1-9 в порядке. </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию, <code>mixedNumbers</code> , которую мы передаем массивом в качестве аргумента. Измените функцию, используя <code>push()</code> и <code>unshift()</code> чтобы добавить <code>'I', 2, 'three'</code> в начало массива и <code>7, 'VIII', 9</code> до конца, чтобы возвращаемый массив содержал представления чисел 1-9 в порядке.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>mixedNumbers(["IV", 5, "six"])</code> должны теперь возвращаться <code>["I", 2, "three", "IV", 5, "six", 7, "VIII", 9]</code>'
|
||||
testString: 'assert.deepEqual(mixedNumbers(["IV", 5, "six"]), ["I", 2, "three", "IV", 5, "six", 7, "VIII", 9], "<code>mixedNumbers(["IV", 5, "six"])</code> should now return <code>["I", 2, "three", "IV", 5, "six", 7, "VIII", 9]</code>");'
|
||||
- text: Функция <code>mixedNumbers</code> должна использовать метод <code>push()</code>
|
||||
testString: 'assert.notStrictEqual(mixedNumbers.toString().search(/\.push\(/), -1, "The <code>mixedNumbers</code> function should utilize the <code>push()</code> method");'
|
||||
- text: Функция <code>mixedNumbers</code> должна использовать метод <code>unshift()</code>
|
||||
testString: 'assert.notStrictEqual(mixedNumbers.toString().search(/\.unshift\(/), -1, "The <code>mixedNumbers</code> function should utilize the <code>unshift()</code> method");'
|
||||
- text: <code>mixedNumbers(["IV", 5, "six"])</code> should now return <code>["I", 2, "three", "IV", 5, "six", 7, "VIII", 9]</code>
|
||||
testString: assert.deepEqual(mixedNumbers(['IV', 5, 'six']), ['I', 2, 'three', 'IV', 5, 'six', 7, 'VIII', 9]);
|
||||
- text: The <code>mixedNumbers</code> function should utilize the <code>push()</code> method
|
||||
testString: assert(mixedNumbers.toString().match(/\.push/));
|
||||
- text: The <code>mixedNumbers</code> function should utilize the <code>unshift()</code> method
|
||||
testString: assert(mixedNumbers.toString().match(/\.unshift/));
|
||||
|
||||
```
|
||||
|
||||
@@ -48,14 +52,19 @@ console.log(mixedNumbers(['IV', 5, 'six']));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function mixedNumbers(arr) {
|
||||
// change code below this line
|
||||
arr.push(7,'VIII',9);
|
||||
arr.unshift('I',2,'three');
|
||||
// change code above this line
|
||||
return arr;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,29 +2,33 @@
|
||||
id: 587d78b3367417b2b2512b11
|
||||
title: Add Items Using splice()
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301152
|
||||
localeTitle: Добавление элементов с помощью splice ()
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Помните, что в последнем вызове мы упоминали, что <code>splice()</code> может принимать до трех параметров? Ну, мы можем сделать еще один шаг с помощью <code>splice()</code> - в дополнение к удалению элементов, мы можем использовать этот третий параметр, который представляет один или несколько элементов, чтобы <em>добавить</em> их также. Это может быть невероятно полезно для быстрого переключения элемента или набора элементов для другого. Например, предположим, что вы храните цветовую схему для набора элементов DOM в массиве и хотите динамически изменять цвет на основе некоторых действий: <blockquote> function colorChange (arr, index, newColor) { <br> arr.splice (индекс, 1, newColor); <br> return arr; <br> } <br><br> let colorScheme = ['# 878787', '# a08794', '# bb7e8c', '# c9b6be', '# d1becf']; <br><br> colorScheme = colorChange (colorScheme, 2, '# 332327'); <br> // мы удалили '# bb7e8c' и добавили '# 332327' на свое место <br> // colorScheme теперь равно ['# 878787', '# a08794', '# 332327', '# c9b6be', '# d1becf'] </blockquote> Эта функция принимает массив шестнадцатеричных значений, индекс, с которого нужно удалить элемент, и новый цвет для замены удаленного элемента. Возвращаемое значение представляет собой массив, содержащий новую измененную цветовую схему! Хотя этот пример немного упрощен, мы можем видеть, что значение, использующее <code>splice()</code> может иметь максимальный потенциал. </section>
|
||||
<section id='description'>
|
||||
Помните, что в последнем вызове мы упоминали, что <code>splice()</code> может принимать до трех параметров? Ну, мы можем сделать еще один шаг с помощью <code>splice()</code> - в дополнение к удалению элементов, мы можем использовать этот третий параметр, который представляет один или несколько элементов, чтобы <em>добавить</em> их также. Это может быть невероятно полезно для быстрого переключения элемента или набора элементов для другого. Например, предположим, что вы храните цветовую схему для набора элементов DOM в массиве и хотите динамически изменять цвет на основе некоторых действий: <blockquote> function colorChange (arr, index, newColor) { <br> arr.splice (индекс, 1, newColor); <br> return arr; <br> } <br><br> let colorScheme = ['# 878787', '# a08794', '# bb7e8c', '# c9b6be', '# d1becf']; <br><br> colorScheme = colorChange (colorScheme, 2, '# 332327'); <br> // мы удалили '# bb7e8c' и добавили '# 332327' на свое место <br> // colorScheme теперь равно ['# 878787', '# a08794', '# 332327', '# c9b6be', '# d1becf'] </blockquote> Эта функция принимает массив шестнадцатеричных значений, индекс, с которого нужно удалить элемент, и новый цвет для замены удаленного элемента. Возвращаемое значение представляет собой массив, содержащий новую измененную цветовую схему! Хотя этот пример немного упрощен, мы можем видеть, что значение, использующее <code>splice()</code> может иметь максимальный потенциал.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию <code>htmlColorNames</code> , которая принимает в качестве аргумента массив цветов HTML. Измените функцию с помощью <code>splice()</code> чтобы удалить первые два элемента массива и добавить <code>'DarkSalmon'</code> и <code>'BlanchedAlmond'</code> в соответствующие места. </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию <code>htmlColorNames</code> , которая принимает в качестве аргумента массив цветов HTML. Измените функцию с помощью <code>splice()</code> чтобы удалить первые два элемента массива и добавить <code>'DarkSalmon'</code> и <code>'BlanchedAlmond'</code> в соответствующие места.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>htmlColorNames</code> должны возвращать <code>["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurqoise", "FireBrick"]</code>'
|
||||
testString: 'assert.deepEqual(htmlColorNames(["DarkGoldenRod", "WhiteSmoke", "LavenderBlush", "PaleTurqoise", "FireBrick"]), ["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurqoise", "FireBrick"], "<code>htmlColorNames</code> should return <code>["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurqoise", "FireBrick"]</code>");'
|
||||
- text: Функция <code>htmlColorNames</code> должна использовать метод <code>splice()</code>
|
||||
testString: 'assert(/.splice/.test(code), "The <code>htmlColorNames</code> function should utilize the <code>splice()</code> method");'
|
||||
- text: Вы не должны использовать <code>shift()</code> или <code>unshift()</code> .
|
||||
testString: 'assert(!/shift|unshift/.test(code), "You should not use <code>shift()</code> or <code>unshift()</code>.");'
|
||||
- text: Не следует использовать нотацию массива.
|
||||
testString: 'assert(!/\[\d\]\s*=/.test(code), "You should not use array bracket notation.");'
|
||||
- text: <code>htmlColorNames</code> should return <code>["DarkSalmon", "BlanchedAlmond", "LavenderBlush", "PaleTurqoise", "FireBrick"]</code>
|
||||
testString: assert.deepEqual(htmlColorNames(['DarkGoldenRod', 'WhiteSmoke', 'LavenderBlush', 'PaleTurqoise', 'FireBrick']), ['DarkSalmon', 'BlanchedAlmond', 'LavenderBlush', 'PaleTurqoise', 'FireBrick']);
|
||||
- text: The <code>htmlColorNames</code> function should utilize the <code>splice()</code> method
|
||||
testString: assert(/.splice/.test(code));
|
||||
- text: You should not use <code>shift()</code> or <code>unshift()</code>.
|
||||
testString: assert(!/shift|unshift/.test(code));
|
||||
- text: You should not use array bracket notation.
|
||||
testString: assert(!/\[\d\]\s*=/.test(code));
|
||||
|
||||
```
|
||||
|
||||
@@ -50,14 +54,16 @@ console.log(htmlColorNames(['DarkGoldenRod', 'WhiteSmoke', 'LavenderBlush', 'Pal
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function htmlColorNames(arr) {
|
||||
arr.splice(0,2,'DarkSalmon', 'BlanchedAlmond');
|
||||
return arr;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,31 +2,35 @@
|
||||
id: 587d7b7c367417b2b2512b18
|
||||
title: Add Key-Value Pairs to JavaScript Objects
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301153
|
||||
localeTitle: Добавление пар ключей к объектам JavaScript
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> В большинстве своих объектов объекты представляют собой только коллекции <dfn>пар ключ-значение</dfn> , или, другими словами, части данных, сопоставленные с уникальными идентификаторами, которые мы называем <dfn>свойствами</dfn> или <dfn>ключами</dfn> . Давайте рассмотрим очень простой пример: <blockquote> пусть FCC_User = { <br> имя пользователя: 'awesome_coder', <br> последователи: 572, <br> баллы: 1741, <br> completedProjects: 15 <br> }; </blockquote> Вышеприведенный код определяет объект с именем <code>FCC_User</code> который имеет четыре <dfn>свойства</dfn> , каждый из которых соответствует определенному значению. Если бы мы хотели узнать количество <code>followers</code> <code>FCC_User</code> , мы можем получить доступ к этому свойству, написав: <blockquote> let userData = FCC_User.followers; <br> // userData равно 572 </blockquote> Это называется <dfn>точечной нотации</dfn> . Кроме того, мы также можем получить доступ к свойству с помощью скобок, например: <blockquote> let userData = FCC_User ['followers'] <br> // userData равно 572 </blockquote> Обратите внимание, что с <dfn>обозначением в скобках</dfn> мы заключили <code>followers</code> в кавычки. Это связано с тем, что скобки фактически позволяют нам передавать переменную in, которая будет оцениваться как имя свойства (подсказка: помните об этом позже!). Если бы мы передали <code>followers</code> без кавычек, движок JavaScript попытался бы оценить его как переменную, и <code>ReferenceError: followers is not defined</code> был бы указан идентификатор <code>ReferenceError: followers is not defined</code> . </section>
|
||||
<section id='description'>
|
||||
В большинстве своих объектов объекты представляют собой только коллекции <dfn>пар ключ-значение</dfn> , или, другими словами, части данных, сопоставленные с уникальными идентификаторами, которые мы называем <dfn>свойствами</dfn> или <dfn>ключами</dfn> . Давайте рассмотрим очень простой пример: <blockquote> пусть FCC_User = { <br> имя пользователя: 'awesome_coder', <br> последователи: 572, <br> баллы: 1741, <br> completedProjects: 15 <br> }; </blockquote> Вышеприведенный код определяет объект с именем <code>FCC_User</code> который имеет четыре <dfn>свойства</dfn> , каждый из которых соответствует определенному значению. Если бы мы хотели узнать количество <code>followers</code> <code>FCC_User</code> , мы можем получить доступ к этому свойству, написав: <blockquote> let userData = FCC_User.followers; <br> // userData равно 572 </blockquote> Это называется <dfn>точечной нотации</dfn> . Кроме того, мы также можем получить доступ к свойству с помощью скобок, например: <blockquote> let userData = FCC_User ['followers'] <br> // userData равно 572 </blockquote> Обратите внимание, что с <dfn>обозначением в скобках</dfn> мы заключили <code>followers</code> в кавычки. Это связано с тем, что скобки фактически позволяют нам передавать переменную in, которая будет оцениваться как имя свойства (подсказка: помните об этом позже!). Если бы мы передали <code>followers</code> без кавычек, движок JavaScript попытался бы оценить его как переменную, и <code>ReferenceError: followers is not defined</code> был бы указан идентификатор <code>ReferenceError: followers is not defined</code> .
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Используя тот же синтаксис, мы можем также <em><strong>добавить новые</strong></em> пары ключ-значение в объекты. Мы создали объект для <code>foods</code> с тремя записями. Добавьте еще три записи: <code>bananas</code> со значением <code>13</code> , <code>grapes</code> со значением <code>35</code> и <code>strawberries</code> со значением <code>27</code> . </section>
|
||||
<section id='instructions'>
|
||||
Используя тот же синтаксис, мы можем также <em><strong>добавить новые</strong></em> пары ключ-значение в объекты. Мы создали объект для <code>foods</code> с тремя записями. Добавьте еще три записи: <code>bananas</code> со значением <code>13</code> , <code>grapes</code> со значением <code>35</code> и <code>strawberries</code> со значением <code>27</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: ''
|
||||
testString: 'assert(typeof foods === "object", "<code>foods</code> is an object");'
|
||||
- text: ''
|
||||
testString: 'assert(foods.bananas === 13, "The <code>foods</code> object has a key <code>"bananas"</code> with a value of <code>13</code>");'
|
||||
- text: Объект <code>foods</code> имеет ключевой <code>"grapes"</code> со значением <code>35</code>
|
||||
testString: 'assert(foods.grapes === 35, "The <code>foods</code> object has a key <code>"grapes"</code> with a value of <code>35</code>");'
|
||||
- text: ''
|
||||
testString: 'assert(foods.strawberries === 27, "The <code>foods</code> object has a key <code>"strawberries"</code> with a value of <code>27</code>");'
|
||||
- text: ''
|
||||
testString: 'assert(code.search(/bananas:/) === -1 && code.search(/grapes:/) === -1 && code.search(/strawberries:/) === -1, "The key-value pairs should be set using dot or bracket notation");'
|
||||
- text: <code>foods</code> is an object
|
||||
testString: assert(typeof foods === 'object');
|
||||
- text: The <code>foods</code> object has a key <code>"bananas"</code> with a value of <code>13</code>
|
||||
testString: assert(foods.bananas === 13);
|
||||
- text: The <code>foods</code> object has a key <code>"grapes"</code> with a value of <code>35</code>
|
||||
testString: assert(foods.grapes === 35);
|
||||
- text: The <code>foods</code> object has a key <code>"strawberries"</code> with a value of <code>27</code>
|
||||
testString: assert(foods.strawberries === 27);
|
||||
- text: The key-value pairs should be set using dot or bracket notation
|
||||
testString: assert(code.search(/bananas:/) === -1 && code.search(/grapes:/) === -1 && code.search(/strawberries:/) === -1);
|
||||
|
||||
```
|
||||
|
||||
@@ -54,14 +58,23 @@ console.log(foods);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let foods = {
|
||||
apples: 25,
|
||||
oranges: 32,
|
||||
plums: 28
|
||||
};
|
||||
|
||||
// change code below this line
|
||||
foods['bananas'] = 13;
|
||||
foods['grapes'] = 35;
|
||||
foods['strawberries'] = 27;
|
||||
// change code above this line
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,31 +2,35 @@
|
||||
id: 587d7b7b367417b2b2512b14
|
||||
title: Check For The Presence of an Element With indexOf()
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301154
|
||||
localeTitle: Проверка наличия элемента с помощью indexOf ()
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Так как массивы могут быть изменены, или <em>мутировали,</em> в любое время, нет никакой гарантии , о том, где определенная часть данных будет находиться на данном массиве, или если этот элемент даже до сих пор существует. К счастью, JavaScript предоставляет нам еще один встроенный метод, <code>indexOf()</code> , который позволяет нам быстро и легко проверить наличие элемента в массиве. <code>indexOf()</code> принимает элемент как параметр, а при вызове возвращает позицию или индекс этого элемента или <code>-1</code> если элемент не существует в массиве. Например: <blockquote> пусть плоды = ['яблоки, груши, апельсины, персики, груши; <br><br> fruit.indexOf ('date') // возвращает -1 <br> fruit.indexOf ('апельсины') // возвращает 2 <br> fruit.indexOf ('pears') // возвращает 1, первый индекс, в котором существует элемент </blockquote></section>
|
||||
<section id='description'>
|
||||
Так как массивы могут быть изменены, или <em>мутировали,</em> в любое время, нет никакой гарантии , о том, где определенная часть данных будет находиться на данном массиве, или если этот элемент даже до сих пор существует. К счастью, JavaScript предоставляет нам еще один встроенный метод, <code>indexOf()</code> , который позволяет нам быстро и легко проверить наличие элемента в массиве. <code>indexOf()</code> принимает элемент как параметр, а при вызове возвращает позицию или индекс этого элемента или <code>-1</code> если элемент не существует в массиве. Например: <blockquote> пусть плоды = ['яблоки, груши, апельсины, персики, груши; <br><br> fruit.indexOf ('date') // возвращает -1 <br> fruit.indexOf ('апельсины') // возвращает 2 <br> fruit.indexOf ('pears') // возвращает 1, первый индекс, в котором существует элемент </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> <code>indexOf()</code> может быть невероятно полезен для быстрой проверки наличия элемента в массиве. Мы определили функцию <code>quickCheck</code> , которая принимает в качестве аргумента массив и элемент. Измените функцию, используя <code>indexOf()</code> чтобы она возвращала значение <code>true</code> если переданный элемент существует в массиве, а <code>false</code> если это не так. </section>
|
||||
<section id='instructions'>
|
||||
<code>indexOf()</code> может быть невероятно полезен для быстрой проверки наличия элемента в массиве. Мы определили функцию <code>quickCheck</code> , которая принимает в качестве аргумента массив и элемент. Измените функцию, используя <code>indexOf()</code> чтобы она возвращала значение <code>true</code> если переданный элемент существует в массиве, а <code>false</code> если это не так.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>quickCheck(["squash", "onions", "shallots"], "mushrooms")</code> должны возвращать <code>false</code>'
|
||||
testString: 'assert.strictEqual(quickCheck(["squash", "onions", "shallots"], "mushrooms"), false, "<code>quickCheck(["squash", "onions", "shallots"], "mushrooms")</code> should return <code>false</code>");'
|
||||
- text: '<code>quickCheck(["squash", "onions", "shallots"], "onions")</code> должен возвращать <code>true</code>'
|
||||
testString: 'assert.strictEqual(quickCheck(["squash", "onions", "shallots"], "onions"), true, "<code>quickCheck(["squash", "onions", "shallots"], "onions")</code> should return <code>true</code>");'
|
||||
- text: '<code>quickCheck([3, 5, 9, 125, 45, 2], 125)</code> должен возвращать <code>true</code>'
|
||||
testString: 'assert.strictEqual(quickCheck([3, 5, 9, 125, 45, 2], 125), true, "<code>quickCheck([3, 5, 9, 125, 45, 2], 125)</code> should return <code>true</code>");'
|
||||
- text: '<code>quickCheck([true, false, false], undefined)</code> должен возвращать <code>false</code>'
|
||||
testString: 'assert.strictEqual(quickCheck([true, false, false], undefined), false, "<code>quickCheck([true, false, false], undefined)</code> should return <code>false</code>");'
|
||||
- text: Функция <code>quickCheck</code> должна использовать метод <code>indexOf()</code>
|
||||
testString: 'assert.notStrictEqual(quickCheck.toString().search(/\.indexOf\(/), -1, "The <code>quickCheck</code> function should utilize the <code>indexOf()</code> method");'
|
||||
- text: <code>quickCheck(["squash", "onions", "shallots"], "mushrooms")</code> should return <code>false</code>
|
||||
testString: assert.strictEqual(quickCheck(['squash', 'onions', 'shallots'], 'mushrooms'), false);
|
||||
- text: <code>quickCheck(["onions", "squash", "shallots"], "onions")</code> should return <code>true</code>
|
||||
testString: assert.strictEqual(quickCheck(['onions', 'squash', 'shallots'], 'onions'), true);
|
||||
- text: <code>quickCheck([3, 5, 9, 125, 45, 2], 125)</code> should return <code>true</code>
|
||||
testString: assert.strictEqual(quickCheck([3, 5, 9, 125, 45, 2], 125), true);
|
||||
- text: <code>quickCheck([true, false, false], undefined)</code> should return <code>false</code>
|
||||
testString: assert.strictEqual(quickCheck([true, false, false], undefined), false);
|
||||
- text: The <code>quickCheck</code> function should utilize the <code>indexOf()</code> method
|
||||
testString: assert.notStrictEqual(quickCheck.toString().search(/\.indexOf\(/), -1);
|
||||
|
||||
```
|
||||
|
||||
@@ -51,14 +55,17 @@ console.log(quickCheck(['squash', 'onions', 'shallots'], 'mushrooms'));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function quickCheck(arr, elem) {
|
||||
// change code below this line
|
||||
return arr.indexOf(elem) >= 0;
|
||||
// change code above this line
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,27 +2,37 @@
|
||||
id: 587d7b7d367417b2b2512b1c
|
||||
title: Check if an Object has a Property
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
localeTitle: 'Проверьте, имеет ли объект свойство'
|
||||
forumTopicId: 301155
|
||||
localeTitle: Проверьте, имеет ли объект свойство
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Теперь мы можем добавлять, изменять и удалять ключи из объектов. Но что, если мы просто хотим узнать, обладает ли объект конкретным свойством? JavaScript предоставляет нам два разных способа сделать это. Один использует <code>hasOwnProperty()</code> метод , а другой использует <code>in</code> ключевом слове. Если у нас есть объектные <code>users</code> с собственностью <code>Alan</code> , мы можем проверить его наличие одним из следующих способов: <blockquote> users.hasOwnProperty ( 'Алан'); <br> «Алан» у пользователей; <br> // оба возвращают true </blockquote></section>
|
||||
<section id='description'>
|
||||
Теперь мы можем добавлять, изменять и удалять ключи из объектов. Но что, если мы просто хотим узнать, обладает ли объект конкретным свойством? JavaScript предоставляет нам два разных способа сделать это. Один использует <code>hasOwnProperty()</code> метод , а другой использует <code>in</code> ключевом слове. Если у нас есть объектные <code>users</code> с собственностью <code>Alan</code> , мы можем проверить его наличие одним из следующих способов: <blockquote> users.hasOwnProperty ( 'Алан'); <br> «Алан» у пользователей; <br> // оба возвращают true </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы создали объект, <code>users</code> , с некоторыми пользователями в нем, а функция <code>isEveryoneHere</code> , которую мы передаем объекту <code>users</code> в качестве аргумента. Завершите запись этой функции, чтобы она возвращала значение <code>true</code> только если объект <code>users</code> содержит все четыре имени: <code>Alan</code> , <code>Jeff</code> , <code>Sarah</code> и <code>Ryan</code> , как ключи, и <code>false</code> противном случае. </section>
|
||||
<section id='instructions'>
|
||||
Мы создали объект, <code>users</code> , с некоторыми пользователями в нем, а функция <code>isEveryoneHere</code> , которую мы передаем объекту <code>users</code> в качестве аргумента. Завершите запись этой функции, чтобы она возвращала значение <code>true</code> только если объект <code>users</code> содержит все четыре имени: <code>Alan</code> , <code>Jeff</code> , <code>Sarah</code> и <code>Ryan</code> , как ключи, и <code>false</code> противном случае.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: 'Объект <code>users</code> содержит только ключи <code>Alan</code> , <code>Jeff</code> , <code>Sarah</code> и <code>Ryan</code>'
|
||||
testString: 'assert("Alan" in users && "Jeff" in users && "Sarah" in users && "Ryan" in users && Object.keys(users).length === 4, "The <code>users</code> object only contains the keys <code>Alan</code>, <code>Jeff</code>, <code>Sarah</code>, and <code>Ryan</code>");'
|
||||
- text: 'Функция <code>isEveryoneHere</code> возвращает <code>true</code> если <code>Alan</code> , <code>Jeff</code> , <code>Sarah</code> и <code>Ryan</code> являются свойствами объекта <code>users</code>'
|
||||
testString: 'assert(isEveryoneHere(users) === true, "The function <code>isEveryoneHere</code> returns <code>true</code> if <code>Alan</code>, <code>Jeff</code>, <code>Sarah</code>, and <code>Ryan</code> are properties on the <code>users</code> object");'
|
||||
- text: 'Функция <code>isEveryoneHere</code> возвращает <code>false</code> если <code>Alan</code> , <code>Jeff</code> , <code>Sarah</code> и <code>Ryan</code> не являются объектами объекта <code>users</code>'
|
||||
testString: 'assert((function() { delete users.Alan; delete users.Jeff; delete users.Sarah; delete users.Ryan; return isEveryoneHere(users) })() === false, "The function <code>isEveryoneHere</code> returns <code>false</code> if <code>Alan</code>, <code>Jeff</code>, <code>Sarah</code>, and <code>Ryan</code> are not properties on the <code>users</code> object");'
|
||||
- text: The <code>users</code> object should only contain the keys <code>Alan</code>, <code>Jeff</code>, <code>Sarah</code>, and <code>Ryan</code>
|
||||
testString: assert("Alan" in users && "Jeff" in users && "Sarah" in users && "Ryan" in users && Object.keys(users).length === 4);
|
||||
- text: The function <code>isEveryoneHere</code> should return <code>true</code> if <code>Alan</code>, <code>Jeff</code>, <code>Sarah</code>, and <code>Ryan</code> are properties on the <code>users</code> object
|
||||
testString: assert(isEveryoneHere(users) === true);
|
||||
- text: The function <code>isEveryoneHere</code> should return <code>false</code> if <code>Alan</code> is not a property on the <code>users</code> object
|
||||
testString: assert((function() { delete users.Alan; return isEveryoneHere(users) })() === false);
|
||||
- text: The function <code>isEveryoneHere</code> should return <code>false</code> if <code>Jeff</code> is not a property on the <code>users</code> object
|
||||
testString: assert((function() { delete users.Jeff; return isEveryoneHere(users) })() === false);
|
||||
- text: The function <code>isEveryoneHere</code> should return <code>false</code> if <code>Sarah</code> is not a property on the <code>users</code> object
|
||||
testString: assert((function() { delete users.Sarah; return isEveryoneHere(users) })() === false);
|
||||
- text: The function <code>isEveryoneHere</code> should return <code>false</code> if <code>Ryan</code> is not a property on the <code>users</code> object
|
||||
testString: assert((function() { delete users.Ryan; return isEveryoneHere(users) })() === false);
|
||||
|
||||
```
|
||||
|
||||
@@ -65,14 +75,41 @@ console.log(isEveryoneHere(users));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let users = {
|
||||
Alan: {
|
||||
age: 27,
|
||||
online: true
|
||||
},
|
||||
Jeff: {
|
||||
age: 32,
|
||||
online: true
|
||||
},
|
||||
Sarah: {
|
||||
age: 48,
|
||||
online: true
|
||||
},
|
||||
Ryan: {
|
||||
age: 19,
|
||||
online: true
|
||||
}
|
||||
};
|
||||
|
||||
function isEveryoneHere(obj) {
|
||||
return [
|
||||
'Alan',
|
||||
'Jeff',
|
||||
'Sarah',
|
||||
'Ryan'
|
||||
].every(i => obj.hasOwnProperty(i));
|
||||
}
|
||||
|
||||
console.log(isEveryoneHere(users));
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,25 +2,29 @@
|
||||
id: 587d7b7b367417b2b2512b17
|
||||
title: Combine Arrays with the Spread Operator
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301156
|
||||
localeTitle: Объединить массивы с оператором распространения
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Другим огромным преимуществом оператора <dfn>спреда</dfn> является возможность объединения массивов или вставки всех элементов одного массива в другой при любом индексе. С более традиционными синтаксисами мы можем конкатенировать массивы, но это позволяет нам объединять массивы в конце одного и в начале другого. Синтаксис Spread делает следующую операцию чрезвычайно простой: <blockquote> пусть thisArray = ['sage', 'rosemary', 'parsley', 'thyme']; <br><br> let thatArray = ['basil', 'cilantro', ... thisArray, 'coriander']; <br> // thisArray теперь равен ['basil', 'cilantro', 'sage', 'rosemary', 'parsley', 'thyme', 'coriander'] </blockquote> Используя синтаксис распространения, мы только что выполнили операцию, которая была бы более сложной и более сложной, если бы мы использовали традиционные методы. </section>
|
||||
<section id='description'>
|
||||
Другим огромным преимуществом оператора <dfn>спреда</dfn> является возможность объединения массивов или вставки всех элементов одного массива в другой при любом индексе. С более традиционными синтаксисами мы можем конкатенировать массивы, но это позволяет нам объединять массивы в конце одного и в начале другого. Синтаксис Spread делает следующую операцию чрезвычайно простой: <blockquote> пусть thisArray = ['sage', 'rosemary', 'parsley', 'thyme']; <br><br> let thatArray = ['basil', 'cilantro', ... thisArray, 'coriander']; <br> // thisArray теперь равен ['basil', 'cilantro', 'sage', 'rosemary', 'parsley', 'thyme', 'coriander'] </blockquote> Используя синтаксис распространения, мы только что выполнили операцию, которая была бы более сложной и более сложной, если бы мы использовали традиционные методы.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию <code>spreadOut</code> которая возвращает <code>sentence</code> переменной, модифицируйте функцию с помощью оператора <dfn>спреда,</dfn> чтобы он возвращал массив <code>['learning', 'to', 'code', 'is', 'fun']</code> . </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию <code>spreadOut</code> которая возвращает <code>sentence</code> переменной, модифицируйте функцию с помощью оператора <dfn>спреда,</dfn> чтобы он возвращал массив <code>['learning', 'to', 'code', 'is', 'fun']</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>spreadOut</code> должен вернуться <code>["learning", "to", "code", "is", "fun"]</code>'
|
||||
testString: 'assert.deepEqual(spreadOut(), ["learning", "to", "code", "is", "fun"], "<code>spreadOut</code> should return <code>["learning", "to", "code", "is", "fun"]</code>");'
|
||||
- text: Функция <code>spreadOut</code> должна использовать синтаксис распространения
|
||||
testString: 'assert.notStrictEqual(spreadOut.toString().search(/[...]/), -1, "The <code>spreadOut</code> function should utilize spread syntax");'
|
||||
- text: <code>spreadOut</code> should return <code>["learning", "to", "code", "is", "fun"]</code>
|
||||
testString: assert.deepEqual(spreadOut(), ['learning', 'to', 'code', 'is', 'fun']);
|
||||
- text: The <code>spreadOut</code> function should utilize spread syntax
|
||||
testString: assert.notStrictEqual(spreadOut.toString().search(/[...]/), -1);
|
||||
|
||||
```
|
||||
|
||||
@@ -45,8 +49,6 @@ console.log(spreadOut());
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
@@ -54,5 +56,12 @@ console.log(spreadOut());
|
||||
|
||||
```js
|
||||
// solution required
|
||||
|
||||
function spreadOut() {
|
||||
let fragment = ['to', 'code'];
|
||||
let sentence = ['learning', ...fragment, 'is', 'fun'];
|
||||
return sentence;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,31 +2,35 @@
|
||||
id: 587d7b7b367417b2b2512b13
|
||||
title: Copy an Array with the Spread Operator
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301157
|
||||
localeTitle: Скопируйте массив с помощью оператора распространения
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Хотя <code>slice()</code> позволяет нам выбирать, какие элементы массива копировать, среди нескольких других полезных задач, новый <dfn>оператор с расширением</dfn> ES6 позволяет нам легко скопировать <em>все</em> элементы массива в порядке, с простым и хорошо читаемым синтаксисом. Синтаксис распространения просто выглядит так: <code>...</code> На практике мы можем использовать оператор спредов для копирования массива следующим образом: <blockquote> let thisArray = [true, true, undefined, false, null]; <br> let thatArray = [... thisArray]; <br> // thisArray равно [true, true, undefined, false, null] <br> // thisArray остается неизменным и идентичен этому массиву </blockquote></section>
|
||||
<section id='description'>
|
||||
Хотя <code>slice()</code> позволяет нам выбирать, какие элементы массива копировать, среди нескольких других полезных задач, новый <dfn>оператор с расширением</dfn> ES6 позволяет нам легко скопировать <em>все</em> элементы массива в порядке, с простым и хорошо читаемым синтаксисом. Синтаксис распространения просто выглядит так: <code>...</code> На практике мы можем использовать оператор спредов для копирования массива следующим образом: <blockquote> let thisArray = [true, true, undefined, false, null]; <br> let thatArray = [... thisArray]; <br> // thisArray равно [true, true, undefined, false, null] <br> // thisArray остается неизменным и идентичен этому массиву </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию <code>copyMachine</code> которая принимает <code>arr</code> (массив) и <code>num</code> (число) в качестве аргументов. Функция должна возвращать новый массив, состоящий из <code>num</code> копий <code>arr</code> . Мы выполнили большую часть работы для вас, но пока это не работает. Измените функцию, используя синтаксис распространения, чтобы он работал правильно (подсказка: здесь может быть полезен другой метод, который мы уже рассмотрели!). </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию <code>copyMachine</code> которая принимает <code>arr</code> (массив) и <code>num</code> (число) в качестве аргументов. Функция должна возвращать новый массив, состоящий из <code>num</code> копий <code>arr</code> . Мы выполнили большую часть работы для вас, но пока это не работает. Измените функцию, используя синтаксис распространения, чтобы он работал правильно (подсказка: здесь может быть полезен другой метод, который мы уже рассмотрели!).
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>copyMachine([true, false, true], 2)</code> должен возвращать <code>[[true, false, true], [true, false, true]]</code>'
|
||||
testString: 'assert.deepEqual(copyMachine([true, false, true], 2), [[true, false, true], [true, false, true]], "<code>copyMachine([true, false, true], 2)</code> should return <code>[[true, false, true], [true, false, true]]</code>");'
|
||||
- text: '<code>copyMachine([1, 2, 3], 5)</code> должны возвращать <code>[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]</code>'
|
||||
testString: 'assert.deepEqual(copyMachine([1, 2, 3], 5), [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]], "<code>copyMachine([1, 2, 3], 5)</code> should return <code>[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]</code>");'
|
||||
- text: '<code>copyMachine([true, true, null], 1)</code> должен возвращать <code>[[true, true, null]]</code>'
|
||||
testString: 'assert.deepEqual(copyMachine([true, true, null], 1), [[true, true, null]], "<code>copyMachine([true, true, null], 1)</code> should return <code>[[true, true, null]]</code>");'
|
||||
- text: '<code>copyMachine(["it works"], 3)</code> должен вернуться <code>[["it works"], ["it works"], ["it works"]]</code>'
|
||||
testString: 'assert.deepEqual(copyMachine(["it works"], 3), [["it works"], ["it works"], ["it works"]], "<code>copyMachine(["it works"], 3)</code> should return <code>[["it works"], ["it works"], ["it works"]]</code>");'
|
||||
- text: Функция <code>copyMachine</code> должна использовать <code>spread operator</code> с <code>spread operator</code> с массивом <code>arr</code>
|
||||
testString: 'assert.notStrictEqual(copyMachine.toString().indexOf(".concat(_toConsumableArray(arr))"), -1, "The <code>copyMachine</code> function should utilize the <code>spread operator</code> with array <code>arr</code>");'
|
||||
- text: <code>copyMachine([true, false, true], 2)</code> should return <code>[[true, false, true], [true, false, true]]</code>
|
||||
testString: assert.deepEqual(copyMachine([true, false, true], 2), [[true, false, true], [true, false, true]]);
|
||||
- text: <code>copyMachine([1, 2, 3], 5)</code> should return <code>[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]</code>
|
||||
testString: assert.deepEqual(copyMachine([1, 2, 3], 5), [[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]);
|
||||
- text: <code>copyMachine([true, true, null], 1)</code> should return <code>[[true, true, null]]</code>
|
||||
testString: assert.deepEqual(copyMachine([true, true, null], 1), [[true, true, null]]);
|
||||
- text: <code>copyMachine(["it works"], 3)</code> should return <code>[["it works"], ["it works"], ["it works"]]</code>
|
||||
testString: assert.deepEqual(copyMachine(['it works'], 3), [['it works'], ['it works'], ['it works']]);
|
||||
- text: The <code>copyMachine</code> function should utilize the <code>spread operator</code> with array <code>arr</code>
|
||||
testString: assert(removeJSComments(code).match(/\.\.\.arr/));
|
||||
|
||||
```
|
||||
|
||||
@@ -56,7 +60,15 @@ console.log(copyMachine([true, false, true], 2));
|
||||
|
||||
</div>
|
||||
|
||||
### After Tests
|
||||
<div id='js-teardown'>
|
||||
|
||||
```js
|
||||
const removeJSComments = str => str.replace(/\/\*[\s\S]*?\*\/|\/\/.*$/gm, '');
|
||||
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
@@ -64,6 +76,17 @@ console.log(copyMachine([true, false, true], 2));
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function copyMachine(arr,num){
|
||||
let newArr=[];
|
||||
while(num >=1){
|
||||
// change code below this line
|
||||
newArr.push([...arr]);
|
||||
//change code above this line
|
||||
num--;
|
||||
}
|
||||
return newArr;
|
||||
}
|
||||
console.log(copyMachine([true, false, true], 2));
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,25 +2,29 @@
|
||||
id: 587d7b7a367417b2b2512b12
|
||||
title: Copy Array Items Using slice()
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301158
|
||||
localeTitle: Копирование элементов массива Использование среза ()
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Следующий метод, который мы рассмотрим, - <code>slice()</code> . <code>slice()</code> , вместо того, чтобы модифицировать массив, копировать или <em>извлекать</em> заданное количество элементов в новый массив, оставляя массив вызываемым без изменений. <code>slice()</code> принимает только 2 параметра - первый - это индекс, с которого нужно начинать извлечение, а второй - это индекс, в котором останавливается извлечение (извлечение произойдет до, но не включает элемент в этот индекс). Учти это: <blockquote> пусть weatherConditions = ['rain', 'snow', 'sleet', 'hail', 'clear']; <br><br> let todaysWeather = weatherConditions.slice (1, 3); <br> // todaysWeather равно ['snow', 'sleet']; <br> // weatherConditions по-прежнему равно ['rain', 'snow', 'sleet', 'hail', 'clear'] <br></blockquote> Фактически, мы создали новый массив, извлекая элементы из существующего массива. </section>
|
||||
<section id='description'>
|
||||
Следующий метод, который мы рассмотрим, - <code>slice()</code> . <code>slice()</code> , вместо того, чтобы модифицировать массив, копировать или <em>извлекать</em> заданное количество элементов в новый массив, оставляя массив вызываемым без изменений. <code>slice()</code> принимает только 2 параметра - первый - это индекс, с которого нужно начинать извлечение, а второй - это индекс, в котором останавливается извлечение (извлечение произойдет до, но не включает элемент в этот индекс). Учти это: <blockquote> пусть weatherConditions = ['rain', 'snow', 'sleet', 'hail', 'clear']; <br><br> let todaysWeather = weatherConditions.slice (1, 3); <br> // todaysWeather равно ['snow', 'sleet']; <br> // weatherConditions по-прежнему равно ['rain', 'snow', 'sleet', 'hail', 'clear'] <br></blockquote> Фактически, мы создали новый массив, извлекая элементы из существующего массива.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию, <code>forecast</code> , которая принимает массив в качестве аргумента. Измените функцию, используя <code>slice()</code> чтобы извлечь информацию из массива аргументов и вернуть новый массив, содержащий элементы <code>'warm'</code> и <code>'sunny'</code> . </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию, <code>forecast</code> , которая принимает массив в качестве аргумента. Измените функцию, используя <code>slice()</code> чтобы извлечь информацию из массива аргументов и вернуть новый массив, содержащий элементы <code>'warm'</code> и <code>'sunny'</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>forecast</code> должен вернуться <code>["warm", "sunny"]</code>'
|
||||
testString: 'assert.deepEqual(forecast(["cold", "rainy", "warm", "sunny", "cool", "thunderstorms"]), ["warm", "sunny"], "<code>forecast</code> should return <code>["warm", "sunny"]");'
|
||||
- text: Функция <code>forecast</code> должна использовать метод <code>slice()</code>
|
||||
testString: 'assert(/\.slice\(/.test(code), "The <code>forecast</code> function should utilize the <code>slice()</code> method");'
|
||||
- text: <code>forecast</code> should return <code>["warm", "sunny"]</code>
|
||||
testString: assert.deepEqual(forecast(['cold', 'rainy', 'warm', 'sunny', 'cool', 'thunderstorms']), ['warm', 'sunny']);
|
||||
- text: The <code>forecast</code> function should utilize the <code>slice()</code> method
|
||||
testString: assert(/\.slice\(/.test(code));
|
||||
|
||||
```
|
||||
|
||||
@@ -45,14 +49,15 @@ console.log(forecast(['cold', 'rainy', 'warm', 'sunny', 'cool', 'thunderstorms']
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function forecast(arr) {
|
||||
return arr.slice(2,4);
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,31 +2,35 @@
|
||||
id: 587d7b7b367417b2b2512b16
|
||||
title: Create complex multi-dimensional arrays
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301159
|
||||
localeTitle: Создание сложных многомерных массивов
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Потрясающие! Вы только что узнали тонну о массивах! Это был довольно высокий уровень обзора, и есть еще много возможностей узнать о работе с массивами, многое из которых вы увидите в последующих разделах. Но прежде чем перейти к просмотру <dfn>объектов</dfn> , давайте взглянем еще раз и посмотрим, как массивы могут стать немного более сложными, чем то, что мы видели в предыдущих задачах. Одна из самых мощных функций при рассмотрении массивов как структур данных состоит в том, что массивы могут содержать или даже полностью состоять из других массивов. Мы видели массивы, которые содержат массивы в предыдущих задачах, но довольно простые. Однако массивы могут содержать бесконечную глубину массивов, которые могут содержать другие массивы, каждый со своими произвольными уровнями глубины и т. Д. Таким образом, массив может очень быстро стать очень сложной структурой данных, известной как <dfn>многомерный</dfn> или вложенный массив. Рассмотрим следующий пример: <blockquote> let nestedArray = [// верхний или первый уровень - внешний массив <br> ['deep'], // массив в массиве, 2 уровня глубины <br> [ <br> ['глубже'], ['более глубокий'] // 2 массива вложенные 3 уровня в глубину <br> ], <br> [ <br> [ <br> ['deepest'], ['deepest'] // 2 массива вложенные 4 уровня в глубину <br> ], <br> [ <br> [ <br> ['deepest-est?'] // массив вложен в 5 уровней в глубину <br> ] <br> ] <br> ] <br> ]; </blockquote> Хотя этот пример может показаться запутанным, этот уровень сложности не является неслыханным или даже необычным при работе с большими объемами данных. Тем не менее, мы все же можем очень легко получить доступ к самым глубоким уровням массива этого комплекса с помощью скобок: <blockquote> console.log (nestedArray [2] [1] [0] [0] [0]); <br> // logs: самый глубокий? </blockquote> И теперь, когда мы знаем, где эта часть данных, мы можем ее сбросить, если нам нужно: <blockquote> nestedArray [2] [1] [0] [0] [0] = 'еще глубже'; <br><br> console.log (nestedArray [2] [1] [0] [0] [0]); <br> // теперь журналы: еще глубже </blockquote></section>
|
||||
<section id='description'>
|
||||
Потрясающие! Вы только что узнали тонну о массивах! Это был довольно высокий уровень обзора, и есть еще много возможностей узнать о работе с массивами, многое из которых вы увидите в последующих разделах. Но прежде чем перейти к просмотру <dfn>объектов</dfn> , давайте взглянем еще раз и посмотрим, как массивы могут стать немного более сложными, чем то, что мы видели в предыдущих задачах. Одна из самых мощных функций при рассмотрении массивов как структур данных состоит в том, что массивы могут содержать или даже полностью состоять из других массивов. Мы видели массивы, которые содержат массивы в предыдущих задачах, но довольно простые. Однако массивы могут содержать бесконечную глубину массивов, которые могут содержать другие массивы, каждый со своими произвольными уровнями глубины и т. Д. Таким образом, массив может очень быстро стать очень сложной структурой данных, известной как <dfn>многомерный</dfn> или вложенный массив. Рассмотрим следующий пример: <blockquote> let nestedArray = [// верхний или первый уровень - внешний массив <br> ['deep'], // массив в массиве, 2 уровня глубины <br> [ <br> ['глубже'], ['более глубокий'] // 2 массива вложенные 3 уровня в глубину <br> ], <br> [ <br> [ <br> ['deepest'], ['deepest'] // 2 массива вложенные 4 уровня в глубину <br> ], <br> [ <br> [ <br> ['deepest-est?'] // массив вложен в 5 уровней в глубину <br> ] <br> ] <br> ] <br> ]; </blockquote> Хотя этот пример может показаться запутанным, этот уровень сложности не является неслыханным или даже необычным при работе с большими объемами данных. Тем не менее, мы все же можем очень легко получить доступ к самым глубоким уровням массива этого комплекса с помощью скобок: <blockquote> console.log (nestedArray [2] [1] [0] [0] [0]); <br> // logs: самый глубокий? </blockquote> И теперь, когда мы знаем, где эта часть данных, мы можем ее сбросить, если нам нужно: <blockquote> nestedArray [2] [1] [0] [0] [0] = 'еще глубже'; <br><br> console.log (nestedArray [2] [1] [0] [0] [0]); <br> // теперь журналы: еще глубже </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили переменную <code>myNestedArray</code> , равную массиву. Измените <code>myNestedArray</code> , используя любую комбинацию <dfn>строк</dfn> , <dfn>чисел</dfn> и <dfn>логических</dfn> элементов для элементов данных, так что он имеет ровно пять уровней глубины (помните, что внешний массив - это уровень 1). Где-то на третьем уровне, включите строку <code>'deep'</code> , на четвертом уровне, включите строку <code>'deeper'</code> , а на пятом уровне включите строку <code>'deepest'</code> . </section>
|
||||
<section id='instructions'>
|
||||
Мы определили переменную <code>myNestedArray</code> , равную массиву. Измените <code>myNestedArray</code> , используя любую комбинацию <dfn>строк</dfn> , <dfn>чисел</dfn> и <dfn>логических</dfn> элементов для элементов данных, так что он имеет ровно пять уровней глубины (помните, что внешний массив - это уровень 1). Где-то на третьем уровне, включите строку <code>'deep'</code> , на четвертом уровне, включите строку <code>'deeper'</code> , а на пятом уровне включите строку <code>'deepest'</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>myNestedArray</code> должен содержать только числа, булевы и строки в качестве элементов данных'
|
||||
testString: 'assert.strictEqual((function(arr) { let flattened = (function flatten(arr) { const flat = [].concat(...arr); return flat.some (Array.isArray) ? flatten(flat) : flat; })(arr); for (let i = 0; i < flattened.length; i++) { if ( typeof flattened[i] !== "number" && typeof flattened[i] !== "string" && typeof flattened[i] !== "boolean") { return false } } return true })(myNestedArray), true, "<code>myNestedArray</code> should contain only numbers, booleans, and strings as data elements");'
|
||||
- text: <code>myNestedArray</code> должен иметь ровно 5 уровней глубины
|
||||
testString: 'assert.strictEqual((function(arr) {let depth = 0;function arrayDepth(array, i, d) { if (Array.isArray(array[i])) { arrayDepth(array[i], 0, d + 1);} else { depth = (d > depth) ? d : depth;}if (i < array.length) { arrayDepth(array, i + 1, d);} }arrayDepth(arr, 0, 0);return depth;})(myNestedArray), 4, "<code>myNestedArray</code> should have exactly 5 levels of depth");'
|
||||
- text: '<code>myNestedArray</code> должен содержать ровно одно вхождение строки <code>"deep"</code> на массиве, вложенном в 3 уровня глубины'
|
||||
testString: 'assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, "deep").length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, "deep")[0] === 2, "<code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deep"</code> on an array nested 3 levels deep");'
|
||||
- text: '<code>myNestedArray</code> должен содержать ровно одно вхождение строки <code>"deeper"</code> на массив, вложенный в 4 уровня глубины'
|
||||
testString: 'assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, "deeper").length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, "deeper")[0] === 3, "<code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deeper"</code> on an array nested 4 levels deep");'
|
||||
- text: '<code>myNestedArray</code> должен содержать ровно одно вхождение строки <code>"deepest"</code> в массиве, вложенном в 5 уровней'
|
||||
testString: 'assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, "deepest").length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, "deepest")[0] === 4, "<code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deepest"</code> on an array nested 5 levels deep");'
|
||||
- text: <code>myNestedArray</code> should contain only numbers, booleans, and strings as data elements
|
||||
testString: 'assert.strictEqual((function(arr) { let flattened = (function flatten(arr) { const flat = [].concat(...arr); return flat.some (Array.isArray) ? flatten(flat) : flat; })(arr); for (let i = 0; i < flattened.length; i++) { if ( typeof flattened[i] !== ''number'' && typeof flattened[i] !== ''string'' && typeof flattened[i] !== ''boolean'') { return false } } return true })(myNestedArray), true);'
|
||||
- text: <code>myNestedArray</code> should have exactly 5 levels of depth
|
||||
testString: 'assert.strictEqual((function(arr) {let depth = 0;function arrayDepth(array, i, d) { if (Array.isArray(array[i])) { arrayDepth(array[i], 0, d + 1);} else { depth = (d > depth) ? d : depth;}if (i < array.length) { arrayDepth(array, i + 1, d);} }arrayDepth(arr, 0, 0);return depth;})(myNestedArray), 4);'
|
||||
- text: <code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deep"</code> on an array nested 3 levels deep
|
||||
testString: assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, 'deep').length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, 'deep')[0] === 2);
|
||||
- text: <code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deeper"</code> on an array nested 4 levels deep
|
||||
testString: assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, 'deeper').length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, 'deeper')[0] === 3);
|
||||
- text: <code>myNestedArray</code> should contain exactly one occurrence of the string <code>"deepest"</code> on an array nested 5 levels deep
|
||||
testString: assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, 'deepest').length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, 'deepest')[0] === 4);
|
||||
|
||||
```
|
||||
|
||||
@@ -52,14 +56,21 @@ let myNestedArray = [
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let myNestedArray = [
|
||||
// change code below this line
|
||||
['unshift', ['deep', ['deeper', ['deepest']]],false, 1, 2, 3, 'complex', 'nested'],
|
||||
['loop', 'shift', 6, 7, 1000, 'method'],
|
||||
['concat', false, true, 'spread', 'array'],
|
||||
['mutate', 1327.98, 'splice', 'slice', 'push'],
|
||||
['iterate', 1.3849, 7, '8.4876', 'arbitrary', 'depth']
|
||||
// change code above this line
|
||||
];
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,25 +2,29 @@
|
||||
id: 587d7b7d367417b2b2512b1e
|
||||
title: Generate an Array of All Object Keys with Object.keys()
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301160
|
||||
localeTitle: Генерировать массив всех ключей объекта с помощью Object.keys ()
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Мы также можем сгенерировать массив, содержащий все ключи, хранящиеся в объекте, с использованием <code>Object.keys()</code> и передачи объекта в качестве аргумента. Это вернет массив со строками, представляющими каждое свойство объекта. Опять же, не будет никакого конкретного порядка для записей в массиве. </section>
|
||||
<section id='description'>
|
||||
Мы также можем сгенерировать массив, содержащий все ключи, хранящиеся в объекте, с использованием <code>Object.keys()</code> и передачи объекта в качестве аргумента. Это вернет массив со строками, представляющими каждое свойство объекта. Опять же, не будет никакого конкретного порядка для записей в массиве.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Завершите запись функции <code>getArrayOfUsers</code> чтобы она возвращала массив, содержащий все свойства объекта, который он получает в качестве аргумента. </section>
|
||||
<section id='instructions'>
|
||||
Завершите запись функции <code>getArrayOfUsers</code> чтобы она возвращала массив, содержащий все свойства объекта, который он получает в качестве аргумента.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: 'Объект <code>users</code> содержит только ключи <code>Alan</code> , <code>Jeff</code> , <code>Sarah</code> и <code>Ryan</code>'
|
||||
testString: 'assert("Alan" in users && "Jeff" in users && "Sarah" in users && "Ryan" in users && Object.keys(users).length === 4, "The <code>users</code> object only contains the keys <code>Alan</code>, <code>Jeff</code>, <code>Sarah</code>, and <code>Ryan</code>");'
|
||||
- text: 'Функция <code>getArrayOfUsers</code> возвращает массив, содержащий все ключи в объекте <code>users</code>'
|
||||
testString: 'assert((function() { users.Sam = {}; users.Lewis = {}; let R = getArrayOfUsers(users); return (R.indexOf("Alan") !== -1 && R.indexOf("Jeff") !== -1 && R.indexOf("Sarah") !== -1 && R.indexOf("Ryan") !== -1 && R.indexOf("Sam") !== -1 && R.indexOf("Lewis") !== -1); })() === true, "The <code>getArrayOfUsers</code> function returns an array which contains all the keys in the <code>users</code> object");'
|
||||
- text: The <code>users</code> object only contains the keys <code>Alan</code>, <code>Jeff</code>, <code>Sarah</code>, and <code>Ryan</code>
|
||||
testString: assert('Alan' in users && 'Jeff' in users && 'Sarah' in users && 'Ryan' in users && Object.keys(users).length === 4);
|
||||
- text: The <code>getArrayOfUsers</code> function returns an array which contains all the keys in the <code>users</code> object
|
||||
testString: assert((function() { users.Sam = {}; users.Lewis = {}; let R = getArrayOfUsers(users); return (R.indexOf('Alan') !== -1 && R.indexOf('Jeff') !== -1 && R.indexOf('Sarah') !== -1 && R.indexOf('Ryan') !== -1 && R.indexOf('Sam') !== -1 && R.indexOf('Lewis') !== -1); })() === true);
|
||||
|
||||
```
|
||||
|
||||
@@ -63,14 +67,36 @@ console.log(getArrayOfUsers(users));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let users = {
|
||||
Alan: {
|
||||
age: 27,
|
||||
online: false
|
||||
},
|
||||
Jeff: {
|
||||
age: 32,
|
||||
online: true
|
||||
},
|
||||
Sarah: {
|
||||
age: 48,
|
||||
online: false
|
||||
},
|
||||
Ryan: {
|
||||
age: 19,
|
||||
online: true
|
||||
}
|
||||
};
|
||||
|
||||
function getArrayOfUsers(obj) {
|
||||
return Object.keys(obj);
|
||||
}
|
||||
|
||||
console.log(getArrayOfUsers(users));
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,31 +2,35 @@
|
||||
id: 587d7b7b367417b2b2512b15
|
||||
title: Iterate Through All an Array's Items Using For Loops
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301161
|
||||
localeTitle: Итерация через все элементы массива с использованием циклов
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Иногда при работе с массивами очень удобно выполнять итерацию по каждому элементу, чтобы найти один или несколько элементов, которые могут нам понадобиться, или манипулировать массивом на основе того, какие элементы данных соответствуют определенному набору критериев. JavaScript предлагает несколько встроенных методов, каждый из которых перебирает несколько массивов несколькими разными способами для достижения разных результатов (например, each <code>every()</code> , <code>forEach()</code> , <code>map()</code> и т. Д.), Однако наиболее гибкий метод и предлагает нам наибольшую величина управления является простым <code>for</code> петли. Рассмотрим следующее: <blockquote> функция largeThanTen (arr) { <br> пусть newArr = []; <br> для (пусть i = 0; i <arr.length; i ++) { <br> если (arr [i]> 10) { <br> newArr.push (обр [я]); <br> } <br> } <br> return newArr; <br> } <br><br> moreThanTen ([2, 12, 8, 14, 80, 0, 1]); <br> // возвращает [12, 14, 80] </blockquote> Используя цикл <code>for</code> , эта функция выполняет итерации по каждому элементу массива и обращается к нему, и подвергает его простому тесту, который мы создали. Таким образом, мы легко и программно определили, какие элементы данных больше <code>10</code> , и возвратил новый массив, содержащий эти элементы. </section>
|
||||
<section id='description'>
|
||||
Иногда при работе с массивами очень удобно выполнять итерацию по каждому элементу, чтобы найти один или несколько элементов, которые могут нам понадобиться, или манипулировать массивом на основе того, какие элементы данных соответствуют определенному набору критериев. JavaScript предлагает несколько встроенных методов, каждый из которых перебирает несколько массивов несколькими разными способами для достижения разных результатов (например, each <code>every()</code> , <code>forEach()</code> , <code>map()</code> и т. Д.), Однако наиболее гибкий метод и предлагает нам наибольшую величина управления является простым <code>for</code> петли. Рассмотрим следующее: <blockquote> функция largeThanTen (arr) { <br> пусть newArr = []; <br> для (пусть i = 0; i <arr.length; i ++) { <br> если (arr [i]> 10) { <br> newArr.push (обр [я]); <br> } <br> } <br> return newArr; <br> } <br><br> moreThanTen ([2, 12, 8, 14, 80, 0, 1]); <br> // возвращает [12, 14, 80] </blockquote> Используя цикл <code>for</code> , эта функция выполняет итерации по каждому элементу массива и обращается к нему, и подвергает его простому тесту, который мы создали. Таким образом, мы легко и программно определили, какие элементы данных больше <code>10</code> , и возвратил новый массив, содержащий эти элементы.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию, <code>filteredArray</code> , которая принимает <code>arr</code> , вложенный массив и <code>elem</code> качестве аргументов, и возвращает новый массив. <code>elem</code> представляет собой элемент, который может присутствовать или не присутствовать на одном или нескольких массивах, вложенных в <code>arr</code> . Измените функцию, используя цикл <code>for</code> , чтобы вернуть отфильтрованную версию переданного массива таким образом, чтобы любой массив, вложенный в <code>arr</code> содержащий <code>elem</code> , был удален. </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию, <code>filteredArray</code> , которая принимает <code>arr</code> , вложенный массив и <code>elem</code> качестве аргументов, и возвращает новый массив. <code>elem</code> представляет собой элемент, который может присутствовать или не присутствовать на одном или нескольких массивах, вложенных в <code>arr</code> . Измените функцию, используя цикл <code>for</code> , чтобы вернуть отфильтрованную версию переданного массива таким образом, чтобы любой массив, вложенный в <code>arr</code> содержащий <code>elem</code> , был удален.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>filteredArray([[10, 8, 3], [14, 6, 23], [3, 18, 6]], 18)</code> должны вернуться <code>[ [10, 8, 3], [14, 6, 23] ]</code>'
|
||||
testString: 'assert.deepEqual(filteredArray([ [10, 8, 3], [14, 6, 23], [3, 18, 6] ], 18), [[10, 8, 3], [14, 6, 23]], "<code>filteredArray([[10, 8, 3], [14, 6, 23], [3, 18, 6]], 18)</code> should return <code>[ [10, 8, 3], [14, 6, 23] ]</code>");'
|
||||
- text: '<code>filteredArray([ ["trumpets", 2], ["flutes", 4], ["saxophones", 2] ], 2)</code> должны возвращать <code>[ ["flutes", 4] ]</code>'
|
||||
testString: 'assert.deepEqual(filteredArray([ ["trumpets", 2], ["flutes", 4], ["saxophones", 2] ], 2), [["flutes", 4]], "<code>filteredArray([ ["trumpets", 2], ["flutes", 4], ["saxophones", 2] ], 2)</code> should return <code>[ ["flutes", 4] ]</code>");'
|
||||
- text: '<code>filteredArray([ ["amy", "beth", "sam"], ["dave", "sean", "peter"] ], "peter")</code> должен возвращать <code>[ ["amy", "beth", "sam"] ]</code>'
|
||||
testString: 'assert.deepEqual(filteredArray([["amy", "beth", "sam"], ["dave", "sean", "peter"]], "peter"), [["amy", "beth", "sam"]], "<code>filteredArray([ ["amy", "beth", "sam"], ["dave", "sean", "peter"] ], "peter")</code> should return <code>[ ["amy", "beth", "sam"] ]</code>");'
|
||||
- text: '<code>filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3)</code> должны возвращать <code>[ ]</code>'
|
||||
testString: 'assert.deepEqual(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3), [], "<code>filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3)</code> should return <code>[ ]</code>");'
|
||||
- text: Функция <code>filteredArray</code> должна использовать цикл <code>for</code>
|
||||
testString: 'assert.notStrictEqual(filteredArray.toString().search(/for/), -1, "The <code>filteredArray</code> function should utilize a <code>for</code> loop");'
|
||||
- text: <code>filteredArray([[10, 8, 3], [14, 6, 23], [3, 18, 6]], 18)</code> should return <code>[ [10, 8, 3], [14, 6, 23] ]</code>
|
||||
testString: assert.deepEqual(filteredArray([ [10, 8, 3], [14, 6, 23], [3, 18, 6] ], 18), [[10, 8, 3], [14, 6, 23]]);
|
||||
- text: <code>filteredArray([ ["trumpets", 2], ["flutes", 4], ["saxophones", 2] ], 2)</code> should return <code>[ ["flutes", 4] ]</code>
|
||||
testString: assert.deepEqual(filteredArray([ ['trumpets', 2], ['flutes', 4], ['saxophones', 2] ], 2), [['flutes', 4]]);
|
||||
- text: <code>filteredArray([ ["amy", "beth", "sam"], ["dave", "sean", "peter"] ], "peter")</code> should return <code>[ ["amy", "beth", "sam"] ]</code>
|
||||
testString: assert.deepEqual(filteredArray([['amy', 'beth', 'sam'], ['dave', 'sean', 'peter']], 'peter'), [['amy', 'beth', 'sam']]);
|
||||
- text: <code>filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3)</code> should return <code>[ ]</code>
|
||||
testString: assert.deepEqual(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3), []);
|
||||
- text: The <code>filteredArray</code> function should utilize a <code>for</code> loop
|
||||
testString: assert.notStrictEqual(filteredArray.toString().search(/for/), -1);
|
||||
|
||||
```
|
||||
|
||||
@@ -53,14 +57,23 @@ console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function filteredArray(arr, elem) {
|
||||
let newArr = [];
|
||||
// change code below this line
|
||||
for (let i = 0; i<arr.length; i++) {
|
||||
if (arr[i].indexOf(elem) < 0) {
|
||||
newArr.push(arr[i]);
|
||||
}
|
||||
}
|
||||
// change code above this line
|
||||
return newArr;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -1,26 +1,34 @@
|
||||
---
|
||||
id: 587d7b7d367417b2b2512b1d
|
||||
title: 'Iterate Through the Keys of an Object with a for...in Statement'
|
||||
title: Iterate Through the Keys of an Object with a for...in Statement
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301162
|
||||
localeTitle: Итерация через ключи объекта с помощью for for ... in Statement
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Иногда вам может потребоваться повторить все ключи внутри объекта. Для этого требуется конкретный синтаксис в JavaScript, называемый выражением <dfn>for for ... in</dfn> . Для объекта наших <code>users</code> это может выглядеть так: <blockquote> для (разрешить пользователям пользователей) { <br> console.log (пользователь); <br> }; <br><br> // logs: <br> Алан <br> Джефф <br> Сара <br> Райан </blockquote> В этом заявлении мы определили <code>user</code> переменной, и, как вы можете видеть, эта переменная была сброшена во время каждой итерации каждому из ключей объекта, когда оператор зациклился на объекте, в результате чего каждое имя пользователя печаталось на консоль. <strong>ЗАМЕТКА:</strong> <br> Объекты не поддерживают упорядочение хранимых ключей, например массивов; таким образом, позиция клавиш на объекте или относительный порядок, в котором он появляется, не имеет значения при ссылке или доступе к этому ключу. </section>
|
||||
<section id='description'>
|
||||
Иногда вам может потребоваться повторить все ключи внутри объекта. Для этого требуется конкретный синтаксис в JavaScript, называемый выражением <dfn>for for ... in</dfn> . Для объекта наших <code>users</code> это может выглядеть так: <blockquote> для (разрешить пользователям пользователей) { <br> console.log (пользователь); <br> }; <br><br> // logs: <br> Алан <br> Джефф <br> Сара <br> Райан </blockquote> В этом заявлении мы определили <code>user</code> переменной, и, как вы можете видеть, эта переменная была сброшена во время каждой итерации каждому из ключей объекта, когда оператор зациклился на объекте, в результате чего каждое имя пользователя печаталось на консоль. <strong>ЗАМЕТКА:</strong> <br> Объекты не поддерживают упорядочение хранимых ключей, например массивов; таким образом, позиция клавиш на объекте или относительный порядок, в котором он появляется, не имеет значения при ссылке или доступе к этому ключу.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию <code>countOnline</code> ; используйте оператор <dfn>for for ...</dfn> внутри этой функции, чтобы прокручивать пользователей в объекте <code>users</code> и возвращать число пользователей, у которых свойство <code>online</code> установлено <code>true</code> . </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию <code>countOnline</code> ; используйте оператор <dfn>for for ...</dfn> внутри этой функции, чтобы прокручивать пользователей в объекте <code>users</code> и возвращать число пользователей, у которых свойство <code>online</code> установлено <code>true</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>users</code> объект содержит пользователей <code>Jeff</code> и <code>Ryan</code> с <code>online</code> настройкой <code>true</code> и пользователи <code>Alan</code> и <code>Sarah</code> с <code>online</code> настройкой на <code>false</code>
|
||||
testString: 'assert(users.Alan.online === false && users.Jeff.online === true && users.Sarah.online === false && users.Ryan.online === true, "The <code>users</code> object contains users <code>Jeff</code> and <code>Ryan</code> with <code>online</code> set to <code>true</code> and users <code>Alan</code> and <code>Sarah</code> with <code>online</code> set to <code>false</code>");'
|
||||
- text: 'Функция <code>countOnline</code> возвращает количество пользователей, у которых свойство <code>online</code> установлено <code>countOnline</code> <code>true</code>'
|
||||
testString: 'assert((function() { users.Harry = {online: true}; users.Sam = {online: true}; users.Carl = {online: true}; return countOnline(users) })() === 5, "The function <code>countOnline</code> returns the number of users with the <code>online</code> property set to <code>true</code>");'
|
||||
- text: The function <code>countOnline</code> should use a `for in` statement to iterate through the object keys of the object passed to it.
|
||||
testString: assert(code.match(/for\s*\(\s*(var|let)\s+[a-zA-Z_$]\w*\s+in\s+[a-zA-Z_$]\w*\s*\)\s*{/));
|
||||
- text: 'The function <code>countOnline</code> should return <code>1</code> when the object <code>{ Alan: { online: false }, Jeff: { online: true }, Sarah: { online: false } }</code> is passed to it'
|
||||
testString: assert(countOnline(usersObj1) === 1);
|
||||
- text: 'The function <code>countOnline</code> should return <code>2</code> when the object <code>{ Alan: { online: true }, Jeff: { online: false }, Sarah: { online: true } }</code> is passed to it'
|
||||
testString: assert(countOnline(usersObj2) === 2);
|
||||
- text: 'The function <code>countOnline</code> should return <code>0</code> when the object <code>{ Alan: { online: false }, Jeff: { online: false }, Sarah: { online: false } }</code> is passed to it'
|
||||
testString: assert(countOnline(usersObj3) === 0);
|
||||
|
||||
```
|
||||
|
||||
@@ -32,38 +40,60 @@ tests:
|
||||
<div id='js-seed'>
|
||||
|
||||
```js
|
||||
let users = {
|
||||
Alan: {
|
||||
age: 27,
|
||||
online: false
|
||||
},
|
||||
Jeff: {
|
||||
age: 32,
|
||||
online: true
|
||||
},
|
||||
Sarah: {
|
||||
age: 48,
|
||||
online: false
|
||||
},
|
||||
Ryan: {
|
||||
age: 19,
|
||||
online: true
|
||||
}
|
||||
};
|
||||
|
||||
function countOnline(obj) {
|
||||
function countOnline(usersObj) {
|
||||
// change code below this line
|
||||
|
||||
// change code above this line
|
||||
}
|
||||
|
||||
console.log(countOnline(users));
|
||||
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
### After Tests
|
||||
<div id='js-teardown'>
|
||||
|
||||
```js
|
||||
const usersObj1 = {
|
||||
Alan: {
|
||||
online: false
|
||||
},
|
||||
Jeff: {
|
||||
online: true
|
||||
},
|
||||
Sarah: {
|
||||
online: false
|
||||
}
|
||||
}
|
||||
|
||||
const usersObj2 = {
|
||||
Alan: {
|
||||
online: true
|
||||
},
|
||||
Jeff: {
|
||||
online: false
|
||||
},
|
||||
Sarah: {
|
||||
online: true
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const usersObj3 = {
|
||||
Alan: {
|
||||
online: false
|
||||
},
|
||||
Jeff: {
|
||||
online: false
|
||||
},
|
||||
Sarah: {
|
||||
online: false
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
@@ -71,6 +101,15 @@ console.log(countOnline(users));
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function countOnline(usersObj) {
|
||||
let online = 0;
|
||||
for(let user in usersObj){
|
||||
if(usersObj[user].online) {
|
||||
online++;
|
||||
}
|
||||
}
|
||||
return online;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,27 +2,31 @@
|
||||
id: 587d7b7d367417b2b2512b1f
|
||||
title: Modify an Array Stored in an Object
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
localeTitle: 'Измените массив, хранящийся в объекте'
|
||||
forumTopicId: 301163
|
||||
localeTitle: Измените массив, хранящийся в объекте
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Теперь вы видели все основные операции для объектов JavaScript. Вы можете добавлять, изменять и удалять пары ключ-значение, проверять наличие ключей и перебирать все ключи в объекте. По мере продолжения изучения JavaScript вы увидите еще более универсальные приложения объектов. Кроме того, дополнительные уроки Advanced Data Structures далее в учебной программе также охватывают объекты ES6 <dfn>Map</dfn> и <dfn>Set</dfn> , оба из которых похожи на обычные объекты, но предоставляют некоторые дополнительные функции. Теперь, когда вы изучили основы массивов и объектов, вы полностью готовы приступить к решению более сложных проблем с помощью JavaScript! </section>
|
||||
<section id='description'>
|
||||
Теперь вы видели все основные операции для объектов JavaScript. Вы можете добавлять, изменять и удалять пары ключ-значение, проверять наличие ключей и перебирать все ключи в объекте. По мере продолжения изучения JavaScript вы увидите еще более универсальные приложения объектов. Кроме того, дополнительные уроки Advanced Data Structures далее в учебной программе также охватывают объекты ES6 <dfn>Map</dfn> и <dfn>Set</dfn> , оба из которых похожи на обычные объекты, но предоставляют некоторые дополнительные функции. Теперь, когда вы изучили основы массивов и объектов, вы полностью готовы приступить к решению более сложных проблем с помощью JavaScript!
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Взгляните на объект, который мы предоставили в редакторе кода. <code>user</code> объект содержит три ключа. Ключ <code>data</code> содержит пять ключей, один из которых содержит массив <code>friends</code> . Из этого вы можете видеть, как гибкие объекты являются структурами данных. Мы начали писать функцию <code>addFriend</code> . Закончите запись, чтобы он взял объект <code>user</code> и добавил имя аргумента <code>friend</code> в массив, хранящийся в <code>user.data.friends</code> и возвращает этот массив. </section>
|
||||
<section id='instructions'>
|
||||
Взгляните на объект, который мы предоставили в редакторе кода. <code>user</code> объект содержит три ключа. Ключ <code>data</code> содержит пять ключей, один из которых содержит массив <code>friends</code> . Из этого вы можете видеть, как гибкие объекты являются структурами данных. Мы начали писать функцию <code>addFriend</code> . Закончите запись, чтобы он взял объект <code>user</code> и добавил имя аргумента <code>friend</code> в массив, хранящийся в <code>user.data.friends</code> и возвращает этот массив.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>user</code> объект имеет <code>name</code> , <code>age</code> и ключи <code>data</code>'
|
||||
testString: 'assert("name" in user && "age" in user && "data" in user, "The <code>user</code> object has <code>name</code>, <code>age</code>, and <code>data</code> keys");'
|
||||
- text: Функция <code>addFriend</code> принимает объект <code>user</code> и строку <code>friend</code> как аргументы и добавляет друга в массив <code>friends</code> в <code>user</code> объекте
|
||||
testString: 'assert((function() { let L1 = user.data.friends.length; addFriend(user, "Sean"); let L2 = user.data.friends.length; return (L2 === L1 + 1); })(), "The <code>addFriend</code> function accepts a <code>user</code> object and a <code>friend</code> string as arguments and adds the friend to the array of <code>friends</code> in the <code>user</code> object");'
|
||||
- text: '<code>addFriend(user, "Pete")</code> должен вернуться <code>["Sam", "Kira", "Tomo", "Pete"]</code>'
|
||||
testString: 'assert.deepEqual((function() { delete user.data.friends; user.data.friends = ["Sam", "Kira", "Tomo"]; return addFriend(user, "Pete") })(), ["Sam", "Kira", "Tomo", "Pete"], "<code>addFriend(user, "Pete")</code> should return <code>["Sam", "Kira", "Tomo", "Pete"]</code>");'
|
||||
- text: The <code>user</code> object has <code>name</code>, <code>age</code>, and <code>data</code> keys
|
||||
testString: assert('name' in user && 'age' in user && 'data' in user);
|
||||
- text: The <code>addFriend</code> function accepts a <code>user</code> object and a <code>friend</code> string as arguments and adds the friend to the array of <code>friends</code> in the <code>user</code> object
|
||||
testString: assert((function() { let L1 = user.data.friends.length; addFriend(user, 'Sean'); let L2 = user.data.friends.length; return (L2 === L1 + 1); })());
|
||||
- text: <code>addFriend(user, "Pete")</code> should return <code>["Sam", "Kira", "Tomo", "Pete"]</code>
|
||||
testString: assert.deepEqual((function() { delete user.data.friends; user.data.friends = ['Sam', 'Kira', 'Tomo']; return addFriend(user, 'Pete') })(), ['Sam', 'Kira', 'Tomo', 'Pete']);
|
||||
|
||||
```
|
||||
|
||||
@@ -66,14 +70,36 @@ console.log(addFriend(user, 'Pete'));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let user = {
|
||||
name: 'Kenneth',
|
||||
age: 28,
|
||||
data: {
|
||||
username: 'kennethCodesAllDay',
|
||||
joinDate: 'March 26, 2016',
|
||||
organization: 'freeCodeCamp',
|
||||
friends: [
|
||||
'Sam',
|
||||
'Kira',
|
||||
'Tomo'
|
||||
],
|
||||
location: {
|
||||
city: 'San Francisco',
|
||||
state: 'CA',
|
||||
country: 'USA'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function addFriend(userObj, friend) {
|
||||
userObj.data.friends.push(friend);
|
||||
return userObj.data.friends;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,29 +2,33 @@
|
||||
id: 587d7b7c367417b2b2512b19
|
||||
title: Modify an Object Nested Within an Object
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
localeTitle: 'Изменение объекта, вложенного в объект'
|
||||
forumTopicId: 301164
|
||||
localeTitle: Изменение объекта, вложенного в объект
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Теперь давайте посмотрим на несколько более сложный объект. Свойства объекта могут быть вложены в произвольную глубину, а их значениями могут быть любые типы данных, поддерживаемые JavaScript, включая массивы и даже другие объекты. Рассмотрим следующее: <blockquote> let inestedObject = { <br> id: 28802695164, <br> дата: «31 декабря 2016 года», <br> данные: { <br> totalUsers: 99, <br> онлайн: 80, <br> onlineStatus: { <br> активен: 67, <br> 13 гостей <br> } <br> } <br> }; </blockquote> <code>nestedObject</code> имеет три уникальных ключа: <code>id</code> , значение которого - число, <code>date</code> , значение которого является строкой, и <code>data</code> , значение которых является объектом, у которого есть еще один объект, вложенный в него. Хотя структуры могут быстро стать сложными, мы все равно можем использовать одни и те же обозначения для доступа к необходимой нам информации. </section>
|
||||
<section id='description'>
|
||||
Теперь давайте посмотрим на несколько более сложный объект. Свойства объекта могут быть вложены в произвольную глубину, а их значениями могут быть любые типы данных, поддерживаемые JavaScript, включая массивы и даже другие объекты. Рассмотрим следующее: <blockquote> let inestedObject = { <br> id: 28802695164, <br> дата: «31 декабря 2016 года», <br> данные: { <br> totalUsers: 99, <br> онлайн: 80, <br> onlineStatus: { <br> активен: 67, <br> 13 гостей <br> } <br> } <br> }; </blockquote> <code>nestedObject</code> имеет три уникальных ключа: <code>id</code> , значение которого - число, <code>date</code> , значение которого является строкой, и <code>data</code> , значение которых является объектом, у которого есть еще один объект, вложенный в него. Хотя структуры могут быстро стать сложными, мы все равно можем использовать одни и те же обозначения для доступа к необходимой нам информации.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Здесь мы определили объект, <code>userActivity</code> , который включает в себя другой объект, вложенный в него. Вы можете изменять свойства этого вложенного объекта так же, как вы изменили свойства в последнем вызове. Установите значение <code>online</code> ключа на <code>45</code> . </section>
|
||||
<section id='instructions'>
|
||||
Здесь мы определили объект, <code>userActivity</code> , который включает в себя другой объект, вложенный в него. Вы можете изменять свойства этого вложенного объекта так же, как вы изменили свойства в последнем вызове. Установите значение <code>online</code> ключа на <code>45</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>userActivity</code> имеет <code>userActivity</code> <code>id</code> , <code>date</code> и <code>data</code>'
|
||||
testString: 'assert("id" in userActivity && "date" in userActivity && "data" in userActivity, "<code>userActivity</code> has <code>id</code>, <code>date</code> and <code>data</code> properties");'
|
||||
- text: <code>userActivity</code> имеет ключ <code>data</code> установленный для объекта с ключами <code>totalUsers</code> и <code>online</code>
|
||||
testString: 'assert("totalUsers" in userActivity.data && "online" in userActivity.data, "<code>userActivity</code> has a <code>data</code> key set to an object with keys <code>totalUsers</code> and <code>online</code>");'
|
||||
- text: <code>online</code> свойство вложенное в <code>data</code> ключе <code>userActivity</code> должно быть установлено на <code>45</code>
|
||||
testString: 'assert(userActivity.data.online === 45, "The <code>online</code> property nested in the <code>data</code> key of <code>userActivity</code> should be set to <code>45</code>");'
|
||||
- text: Свойство <code>online</code> задается с использованием точечной или скобочной записи
|
||||
testString: 'assert.strictEqual(code.search(/online: 45/), -1, "The <code>online</code> property is set using dot or bracket notation");'
|
||||
- text: <code>userActivity</code> has <code>id</code>, <code>date</code> and <code>data</code> properties
|
||||
testString: assert('id' in userActivity && 'date' in userActivity && 'data' in userActivity);
|
||||
- text: <code>userActivity</code> has a <code>data</code> key set to an object with keys <code>totalUsers</code> and <code>online</code>
|
||||
testString: assert('totalUsers' in userActivity.data && 'online' in userActivity.data);
|
||||
- text: The <code>online</code> property nested in the <code>data</code> key of <code>userActivity</code> should be set to <code>45</code>
|
||||
testString: assert(userActivity.data.online === 45);
|
||||
- text: The <code>online</code> property is set using dot or bracket notation
|
||||
testString: 'assert.strictEqual(code.search(/online: 45/), -1);'
|
||||
|
||||
```
|
||||
|
||||
@@ -55,14 +59,22 @@ console.log(userActivity);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let userActivity = {
|
||||
id: 23894201352,
|
||||
date: 'January 1, 2017',
|
||||
data: {
|
||||
totalUsers: 51,
|
||||
online: 42
|
||||
}
|
||||
};
|
||||
|
||||
userActivity.data.online = 45;
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,27 +2,31 @@
|
||||
id: 587d78b2367417b2b2512b0f
|
||||
title: Remove Items from an Array with pop() and shift()
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301165
|
||||
localeTitle: Удалите элементы из массива с помощью pop () и shift ()
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Оба <code>unshift()</code> <code>push()</code> и <code>unshift()</code> имеют соответствующие методы, которые являются почти функциональными противоположностями: <code>pop()</code> и <code>shift()</code> . Как вы уже догадались, вместо добавления <code>pop()</code> <em>удаляет</em> элемент из конца массива, а <code>shift()</code> удаляет элемент с самого начала. Ключевое различие между <code>pop()</code> и <code>shift()</code> и их кузенами <code>push()</code> и <code>unshift()</code> заключается в том, что ни один из методов не принимает параметры, и каждый из них позволяет только массиву изменять один элемент за раз. Давайте взглянем: <blockquote> let greetings = ['whats up?', 'hello', 'see ya!']; <br><br> greetings.pop (); <br> // теперь равно ['whats up?', 'hello'] <br><br> greetings.shift (); <br> // теперь равно ['hello'] </blockquote> Мы также можем вернуть значение удаляемого элемента любым из следующих способов: <blockquote> let popped = greetings.pop (); <br> // возвращает 'hello' <br> // приветствия теперь равны [] </blockquote></section>
|
||||
<section id='description'>
|
||||
Оба <code>unshift()</code> <code>push()</code> и <code>unshift()</code> имеют соответствующие методы, которые являются почти функциональными противоположностями: <code>pop()</code> и <code>shift()</code> . Как вы уже догадались, вместо добавления <code>pop()</code> <em>удаляет</em> элемент из конца массива, а <code>shift()</code> удаляет элемент с самого начала. Ключевое различие между <code>pop()</code> и <code>shift()</code> и их кузенами <code>push()</code> и <code>unshift()</code> заключается в том, что ни один из методов не принимает параметры, и каждый из них позволяет только массиву изменять один элемент за раз. Давайте взглянем: <blockquote> let greetings = ['whats up?', 'hello', 'see ya!']; <br><br> greetings.pop (); <br> // теперь равно ['whats up?', 'hello'] <br><br> greetings.shift (); <br> // теперь равно ['hello'] </blockquote> Мы также можем вернуть значение удаляемого элемента любым из следующих способов: <blockquote> let popped = greetings.pop (); <br> // возвращает 'hello' <br> // приветствия теперь равны [] </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию <code>popShift</code> , которая принимает массив как аргумент и возвращает новый массив. Измените функцию, используя функции <code>pop()</code> и <code>shift()</code> , чтобы удалить первый и последний элементы массива аргументов и присвоить удаленные элементы соответствующим переменным, чтобы возвращаемый массив содержал их значения. </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию <code>popShift</code> , которая принимает массив как аргумент и возвращает новый массив. Измените функцию, используя функции <code>pop()</code> и <code>shift()</code> , чтобы удалить первый и последний элементы массива аргументов и присвоить удаленные элементы соответствующим переменным, чтобы возвращаемый массив содержал их значения.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>popShift(["challenge", "is", "not", "complete"])</code> должен возвращать <code>["challenge", "complete"]</code>'
|
||||
testString: 'assert.deepEqual(popShift(["challenge", "is", "not", "complete"]), ["challenge", "complete"], "<code>popShift(["challenge", "is", "not", "complete"])</code> should return <code>["challenge", "complete"]</code>");'
|
||||
- text: Функция <code>popShift</code> должна использовать метод <code>pop()</code>
|
||||
testString: 'assert.notStrictEqual(popShift.toString().search(/\.pop\(/), -1, "The <code>popShift</code> function should utilize the <code>pop()</code> method");'
|
||||
- text: Функция <code>popShift</code> должна использовать метод <code>shift()</code>
|
||||
testString: 'assert.notStrictEqual(popShift.toString().search(/\.shift\(/), -1, "The <code>popShift</code> function should utilize the <code>shift()</code> method");'
|
||||
- text: <code>popShift(["challenge", "is", "not", "complete"])</code> should return <code>["challenge", "complete"]</code>
|
||||
testString: assert.deepEqual(popShift(['challenge', 'is', 'not', 'complete']), ["challenge", "complete"]);
|
||||
- text: The <code>popShift</code> function should utilize the <code>pop()</code> method
|
||||
testString: assert.notStrictEqual(popShift.toString().search(/\.pop\(/), -1);
|
||||
- text: The <code>popShift</code> function should utilize the <code>shift()</code> method
|
||||
testString: assert.notStrictEqual(popShift.toString().search(/\.shift\(/), -1);
|
||||
|
||||
```
|
||||
|
||||
@@ -47,14 +51,17 @@ console.log(popShift(['challenge', 'is', 'not', 'complete']));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function popShift(arr) {
|
||||
let popped = arr.pop(); // change this line
|
||||
let shifted = arr.shift(); // change this line
|
||||
return [shifted, popped];
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,25 +2,29 @@
|
||||
id: 587d78b2367417b2b2512b10
|
||||
title: Remove Items Using splice()
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301166
|
||||
localeTitle: Удаление элементов с помощью splice ()
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Итак, мы научились удалять элементы с начала и конца массивов с помощью <code>shift()</code> и <code>pop()</code> , но что, если мы хотим удалить элемент из где-то посередине? Или удалить сразу несколько элементов? Ну, вот где <code>splice()</code> приходит. <code>splice()</code> позволяет нам сделать это: <strong>удалить любое количество последовательных элементов</strong> из любого места в массиве. <code>splice()</code> может принимать до 3 параметров, но на данный момент мы сосредоточимся только на первом 2. Первые два параметра <code>splice()</code> представляют собой целые числа, которые представляют индексы или позиции массива, который является <code>splice()</code> призвал. И помните, массивы <em>нуль-индексируются</em> , поэтому, чтобы указать первый элемент массива, мы будем использовать <code>0</code> . Первый параметр <code>splice()</code> представляет собой индекс в массиве, из которого начинается удаление элементов, а второй параметр указывает количество удаляемых элементов. Например: <blockquote> пусть array = ['today', 'was', 'not', 'so', 'great']; <br><br> array.splice (2, 2); <br> // удалить 2 элемента, начиная с 3-го элемента <br> // массив теперь равен ['today', 'was', 'great'] </blockquote> <code>splice()</code> не только изменяет массив, на который он вызывается, но также возвращает новый массив, содержащий значение удаленных элементов: <blockquote> пусть array = ['I', 'am', 'feeling', 'really', 'happy']; <br><br> пусть newArray = array.splice (3, 2); <br> // newArray равно ['really', 'happy'] </blockquote></section>
|
||||
<section id='description'>
|
||||
Итак, мы научились удалять элементы с начала и конца массивов с помощью <code>shift()</code> и <code>pop()</code> , но что, если мы хотим удалить элемент из где-то посередине? Или удалить сразу несколько элементов? Ну, вот где <code>splice()</code> приходит. <code>splice()</code> позволяет нам сделать это: <strong>удалить любое количество последовательных элементов</strong> из любого места в массиве. <code>splice()</code> может принимать до 3 параметров, но на данный момент мы сосредоточимся только на первом 2. Первые два параметра <code>splice()</code> представляют собой целые числа, которые представляют индексы или позиции массива, который является <code>splice()</code> призвал. И помните, массивы <em>нуль-индексируются</em> , поэтому, чтобы указать первый элемент массива, мы будем использовать <code>0</code> . Первый параметр <code>splice()</code> представляет собой индекс в массиве, из которого начинается удаление элементов, а второй параметр указывает количество удаляемых элементов. Например: <blockquote> пусть array = ['today', 'was', 'not', 'so', 'great']; <br><br> array.splice (2, 2); <br> // удалить 2 элемента, начиная с 3-го элемента <br> // массив теперь равен ['today', 'was', 'great'] </blockquote> <code>splice()</code> не только изменяет массив, на который он вызывается, но также возвращает новый массив, содержащий значение удаленных элементов: <blockquote> пусть array = ['I', 'am', 'feeling', 'really', 'happy']; <br><br> пусть newArray = array.splice (3, 2); <br> // newArray равно ['really', 'happy'] </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили функцию <code>sumOfTen</code> , которая принимает массив как аргумент и возвращает сумму элементов этого массива. Измените функцию, используя <code>splice()</code> , чтобы она вернула значение <code>10</code> . </section>
|
||||
<section id='instructions'>
|
||||
Мы определили функцию <code>sumOfTen</code> , которая принимает массив как аргумент и возвращает сумму элементов этого массива. Измените функцию, используя <code>splice()</code> , чтобы она вернула значение <code>10</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>sumOfTen</code> должен вернуть 10
|
||||
testString: 'assert.strictEqual(sumOfTen([2, 5, 1, 5, 2, 1]), 10, "<code>sumOfTen</code> should return 10");'
|
||||
- text: Функция <code>sumOfTen</code> должна использовать метод <code>splice()</code>
|
||||
testString: 'assert.notStrictEqual(sumOfTen.toString().search(/\.splice\(/), -1, "The <code>sumOfTen</code> function should utilize the <code>splice()</code> method");'
|
||||
- text: <code>sumOfTen</code> should return 10
|
||||
testString: assert.strictEqual(sumOfTen([2, 5, 1, 5, 2, 1]), 10);
|
||||
- text: The <code>sumOfTen</code> function should utilize the <code>splice()</code> method
|
||||
testString: assert.notStrictEqual(sumOfTen.toString().search(/\.splice\(/), -1);
|
||||
|
||||
```
|
||||
|
||||
@@ -46,14 +50,16 @@ console.log(sumOfTen([2, 5, 1, 5, 2, 1]));
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
function sumOfTen(arr) {
|
||||
arr.splice(2,2);
|
||||
return arr.reduce((a, b) => a + b);
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,31 +2,35 @@
|
||||
id: 587d7b7e367417b2b2512b20
|
||||
title: Use an Array to Store a Collection of Data
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301167
|
||||
localeTitle: Используйте массив для хранения коллекции данных
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Ниже приведен пример простейшей реализации структуры данных массива. Это известно как <dfn>одномерный массив</dfn> , что означает, что он имеет только один уровень, или что он не имеет других массивов, вложенных в него. Обратите внимание, что он содержит <dfn>булевы</dfn> , <dfn>строки</dfn> и <dfn>числа</dfn> , среди прочих допустимых типов данных JavaScript: <blockquote> let simpleArray = ['one', 2, 'three', true, false, undefined, null]; <br> console.log (simpleArray.length); <br> // журналы 7 </blockquote> У всех массивов есть свойство length, которое, как показано выше, может быть очень легко доступно с помощью синтаксиса <code>Array.length</code> . Более сложную реализацию массива можно увидеть ниже. Это известно как <dfn>многомерный массив</dfn> или массив, содержащий другие массивы. Обратите внимание, что этот массив также содержит <dfn>объекты</dfn> JavaScript, которые мы рассмотрим очень внимательно в следующем разделе, но пока все, что вам нужно знать, это то, что массивы также способны хранить сложные объекты. <blockquote> пусть complexArray = [ <br> [ <br> { <br> один: 1, <br> два: 2 <br> }, <br> { <br> три: 3, <br> четыре: 4 <br> } <br> ], <br> [ <br> { <br> a: "a", <br> b: "b" <br> }, <br> { <br> c: "c", <br> d: "d" <br> } <br> ] <br> ]; </blockquote></section>
|
||||
<section id='description'>
|
||||
Ниже приведен пример простейшей реализации структуры данных массива. Это известно как <dfn>одномерный массив</dfn> , что означает, что он имеет только один уровень, или что он не имеет других массивов, вложенных в него. Обратите внимание, что он содержит <dfn>булевы</dfn> , <dfn>строки</dfn> и <dfn>числа</dfn> , среди прочих допустимых типов данных JavaScript: <blockquote> let simpleArray = ['one', 2, 'three', true, false, undefined, null]; <br> console.log (simpleArray.length); <br> // журналы 7 </blockquote> У всех массивов есть свойство length, которое, как показано выше, может быть очень легко доступно с помощью синтаксиса <code>Array.length</code> . Более сложную реализацию массива можно увидеть ниже. Это известно как <dfn>многомерный массив</dfn> или массив, содержащий другие массивы. Обратите внимание, что этот массив также содержит <dfn>объекты</dfn> JavaScript, которые мы рассмотрим очень внимательно в следующем разделе, но пока все, что вам нужно знать, это то, что массивы также способны хранить сложные объекты. <blockquote> пусть complexArray = [ <br> [ <br> { <br> один: 1, <br> два: 2 <br> }, <br> { <br> три: 3, <br> четыре: 4 <br> } <br> ], <br> [ <br> { <br> a: "a", <br> b: "b" <br> }, <br> { <br> c: "c", <br> d: "d" <br> } <br> ] <br> ]; </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Мы определили переменную, называемую <code>yourArray</code> . Заполните инструкцию, присвоив массив из не менее 5 элементов в длину переменной <code>yourArray</code> . Ваш массив должен содержать по крайней мере одну <dfn>строку</dfn> , одно <dfn>число</dfn> и одно <dfn>логическое значение</dfn> . </section>
|
||||
<section id='instructions'>
|
||||
Мы определили переменную, называемую <code>yourArray</code> . Заполните инструкцию, присвоив массив из не менее 5 элементов в длину переменной <code>yourArray</code> . Ваш массив должен содержать по крайней мере одну <dfn>строку</dfn> , одно <dfn>число</dfn> и одно <dfn>логическое значение</dfn> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: yourArray - массив
|
||||
testString: 'assert.strictEqual(Array.isArray(yourArray), true, "yourArray is an array");'
|
||||
- text: <code>yourArray</code> имеет <code>yourArray</code> не менее 5 элементов
|
||||
testString: 'assert.isAtLeast(yourArray.length, 5, "<code>yourArray</code> is at least 5 elements long");'
|
||||
- text: <code>yourArray</code> содержит как минимум одно <code>boolean</code>
|
||||
testString: 'assert(yourArray.filter( el => typeof el === "boolean").length >= 1, "<code>yourArray</code> contains at least one <code>boolean</code>");'
|
||||
- text: <code>yourArray</code> содержит хотя бы одно <code>number</code>
|
||||
testString: 'assert(yourArray.filter( el => typeof el === "number").length >= 1, "<code>yourArray</code> contains at least one <code>number</code>");'
|
||||
- text: <code>yourArray</code> содержит хотя бы одну <code>string</code>
|
||||
testString: 'assert(yourArray.filter( el => typeof el === "string").length >= 1, "<code>yourArray</code> contains at least one <code>string</code>");'
|
||||
- text: yourArray is an array
|
||||
testString: assert.strictEqual(Array.isArray(yourArray), true);
|
||||
- text: <code>yourArray</code> is at least 5 elements long
|
||||
testString: assert.isAtLeast(yourArray.length, 5);
|
||||
- text: <code>yourArray</code> contains at least one <code>boolean</code>
|
||||
testString: assert(yourArray.filter( el => typeof el === 'boolean').length >= 1);
|
||||
- text: <code>yourArray</code> contains at least one <code>number</code>
|
||||
testString: assert(yourArray.filter( el => typeof el === 'number').length >= 1);
|
||||
- text: <code>yourArray</code> contains at least one <code>string</code>
|
||||
testString: assert(yourArray.filter( el => typeof el === 'string').length >= 1);
|
||||
|
||||
```
|
||||
|
||||
@@ -44,14 +48,13 @@ let yourArray; // change this line
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
<section id='solution'>
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let yourArray = ['a string', 100, true, ['one', 2], 'another string'];
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -2,25 +2,29 @@
|
||||
id: 587d7b7c367417b2b2512b1b
|
||||
title: Use the delete Keyword to Remove Object Properties
|
||||
challengeType: 1
|
||||
videoUrl: ''
|
||||
forumTopicId: 301168
|
||||
localeTitle: Использование ключа удаления для удаления свойств объекта
|
||||
---
|
||||
|
||||
## Description
|
||||
<section id="description"> Теперь вы знаете, какие объекты и их основные функции и преимущества. Короче говоря, это хранилища с ключевыми значениями, которые обеспечивают гибкий, интуитивно понятный способ структурирования данных <strong><em>и</em></strong> обеспечивают очень быстрое время поиска. Во всех остальных задачах мы опишем несколько общих операций, которые вы можете выполнять на объектах, чтобы вы могли комфортно применять эти полезные структуры данных в своих программах. В более ранних задачах мы добавили и модифицировали пары ключ-значение объекта. Здесь мы увидим, как мы можем <em>удалить</em> пару ключ-значение из объекта. Давайте вернемся к примеру нашего <code>foods</code> последний раз. Если мы хотим удалить ключ <code>apples</code> , мы можем удалить его, используя ключевое слово <code>delete</code> : <blockquote> удалять пищу. </blockquote></section>
|
||||
<section id='description'>
|
||||
Теперь вы знаете, какие объекты и их основные функции и преимущества. Короче говоря, это хранилища с ключевыми значениями, которые обеспечивают гибкий, интуитивно понятный способ структурирования данных <strong><em>и</em></strong> обеспечивают очень быстрое время поиска. Во всех остальных задачах мы опишем несколько общих операций, которые вы можете выполнять на объектах, чтобы вы могли комфортно применять эти полезные структуры данных в своих программах. В более ранних задачах мы добавили и модифицировали пары ключ-значение объекта. Здесь мы увидим, как мы можем <em>удалить</em> пару ключ-значение из объекта. Давайте вернемся к примеру нашего <code>foods</code> последний раз. Если мы хотим удалить ключ <code>apples</code> , мы можем удалить его, используя ключевое слово <code>delete</code> : <blockquote> удалять пищу. </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Используйте ключевое слово delete для удаления <code>oranges</code> , <code>plums</code> и <code>strawberries</code> ключей из объекта <code>foods</code> . </section>
|
||||
<section id='instructions'>
|
||||
Используйте ключевое слово delete для удаления <code>oranges</code> , <code>plums</code> и <code>strawberries</code> ключей из объекта <code>foods</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: 'Объект <code>foods</code> имеет только три ключа: <code>apples</code> , <code>grapes</code> и <code>bananas</code>'
|
||||
testString: 'assert(!foods.hasOwnProperty("oranges") && !foods.hasOwnProperty("plums") && !foods.hasOwnProperty("strawberries") && Object.keys(foods).length === 3, "The <code>foods</code> object only has three keys: <code>apples</code>, <code>grapes</code>, and <code>bananas</code>");'
|
||||
- text: '<code>oranges</code> , <code>plums</code> и <code>strawberries</code> ключи удаляются с помощью <code>delete</code>'
|
||||
testString: 'assert(code.search(/oranges:/) !== -1 && code.search(/plums:/) !== -1 && code.search(/strawberries:/) !== -1, "The <code>oranges</code>, <code>plums</code>, and <code>strawberries</code> keys are removed using <code>delete</code>");'
|
||||
- text: 'The <code>foods</code> object only has three keys: <code>apples</code>, <code>grapes</code>, and <code>bananas</code>'
|
||||
testString: assert(!foods.hasOwnProperty('oranges') && !foods.hasOwnProperty('plums') && !foods.hasOwnProperty('strawberries') && Object.keys(foods).length === 3);
|
||||
- text: The <code>oranges</code>, <code>plums</code>, and <code>strawberries</code> keys are removed using <code>delete</code>
|
||||
testString: assert(code.search(/oranges:/) !== -1 && code.search(/plums:/) !== -1 && code.search(/strawberries:/) !== -1);
|
||||
|
||||
```
|
||||
|
||||
@@ -51,8 +55,6 @@ console.log(foods);
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
@@ -60,5 +62,20 @@ console.log(foods);
|
||||
|
||||
```js
|
||||
// solution required
|
||||
let foods = {
|
||||
apples: 25,
|
||||
oranges: 32,
|
||||
plums: 28,
|
||||
bananas: 13,
|
||||
grapes: 35,
|
||||
strawberries: 27
|
||||
};
|
||||
|
||||
delete foods.oranges;
|
||||
delete foods.plums;
|
||||
delete foods.strawberries;
|
||||
|
||||
console.log(foods);
|
||||
```
|
||||
|
||||
</section>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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: "cat", <br> имена: [ <br> "Meowzer", <br> «Пушистый», <br> «Кит-Кат» <br> ] <br> }, <br> { <br> animalType: «собака», <br> имена: [ <br> "Место", <br> "Bowser", <br> «Фрэнки» <br> ] <br> } <br> ]; <br> ourPets [0] .names [1]; // "Пушистый" <br> ourPets [1] .names [0]; // "Место" </blockquote></section>
|
||||
<section id='description'>
|
||||
Как мы видели в предыдущих примерах, объекты могут содержать как вложенные объекты, так и вложенные массивы. Подобно доступу к вложенным объектам, нотация матричного массива может быть привязана для доступа к вложенным массивам. Ниже приведен пример доступа к вложенному массиву: <blockquote> var ourPets = [ <br> { <br> animalType: "cat", <br> имена: [ <br> "Meowzer", <br> «Пушистый», <br> «Кит-Кат» <br> ] <br> }, <br> { <br> animalType: «собака», <br> имена: [ <br> "Место", <br> "Bowser", <br> «Фрэнки» <br> ] <br> } <br> ]; <br> ourPets [0] .names [1]; // "Пушистый" <br> ourPets [1] .names [0]; // "Место" </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> должен равняться "сосне"
|
||||
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>
|
||||
|
@@ -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> "стол письменный": { <br> «ящик»: «степлер» <br> }, <br> «кабинет»: { <br> "верхний ящик": { <br> «folder1»: «файл», <br> "folder2": "секреты" <br> }, <br> «нижний ящик»: «сода» <br> } <br> }; <br> ourStorage.cabinet ["верхний ящик"]. folder2; // "секреты" <br> ourStorage.desk.drawer; // "степлер" </blockquote></section>
|
||||
<section id='description'>
|
||||
Доступ к дополнительным свойствам объектов можно получить, объединив нотацию точки или скобки. Вот вложенный объект: <blockquote> var ourStorage = { <br> "стол письменный": { <br> «ящик»: «степлер» <br> }, <br> «кабинет»: { <br> "верхний ящик": { <br> «folder1»: «файл», <br> "folder2": "секреты" <br> }, <br> «нижний ящик»: «сода» <br> } <br> }; <br> ourStorage.cabinet ["верхний ящик"]. folder2; // "секреты" <br> ourStorage.desk.drawer; // "степлер" </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> должен равняться "картам"
|
||||
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>
|
||||
|
@@ -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 ["Space Name"]; // Кирк <br> myObj ['More Space']; // Спок <br> myObj [ "NoSpace"]; // USS Enterprise </blockquote> Обратите внимание, что имена свойств с пробелами в них должны быть в кавычках (один или два). </section>
|
||||
<section id='description'>
|
||||
Второй способ доступа к свойствам объекта - это скобки нотации ( <code>[]</code> ). Если свойство объекта, к которому вы пытаетесь получить доступ, имеет пробел в своем имени, вам нужно будет использовать нотацию в виде скобок. Тем не менее, вы все равно можете использовать нотацию нот для объектов без пробелов. Ниже приведен пример использования обозначения скобок для чтения свойства объекта: <blockquote> var myObj = { <br> «Space Name»: «Kirk», <br> «Больше пространства»: «Спок», <br> «NoSpace»: «USS Enterprise» <br> }; <br> myObj ["Space Name"]; // Кирк <br> myObj ['More Space']; // Спок <br> myObj [ "NoSpace"]; // USS Enterprise </blockquote> Обратите внимание, что имена свойств с пробелами в них должны быть в кавычках (один или два).
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Прочитайте значения свойств <code>"an entree"</code> и <code>"the drink"</code> <code>testObj</code> с использованием скобкой и назначьте их <code>entreeValue</code> и <code>drinkValue</code> соответственно. </section>
|
||||
<section id='instructions'>
|
||||
Прочитайте значения свойств <code>"an entree"</code> и <code>"the drink"</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>"hamburger"</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>"water"</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>
|
||||
|
@@ -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>"ballcap"</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>"jersey"</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>
|
||||
|
@@ -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 = "Охотник"; <br> var myBreed = dogs [myDog]; <br> console.log (myBreed); // "Доберман" </blockquote> Другим способом использования этой концепции является то, что имя свойства собирается динамически во время выполнения программы, а именно: <blockquote> var someObj = { <br> propName: "Джон" <br> }; <br> Функция propPrefix (str) { <br> var s = "prop"; <br> return s + str; <br> } <br> var someProp = propPrefix ("Name"); // someProp теперь содержит значение 'propName' <br> console.log (someObj [someProp]); // "Джон" </blockquote> Обратите внимание, что мы <em>не</em> используем кавычки вокруг имени переменной при ее использовании для доступа к свойству, потому что мы используем <em>значение</em> переменной, а не <em>имя</em> . </section>
|
||||
<section id='description'>
|
||||
Еще одно использование нотации к скобкам для объектов - это доступ к свойству, которое хранится как значение переменной. Это может быть очень полезно для итерации через свойства объекта или при доступе к поисковой таблице. Ниже приведен пример использования переменной для доступа к свойству: <blockquote> var dogs = { <br> Фидо: «Мутт», Охотник: «Доберман», Снупи: «Бигл», <br> }; <br> var myDog = "Охотник"; <br> var myBreed = dogs [myDog]; <br> console.log (myBreed); // "Доберман" </blockquote> Другим способом использования этой концепции является то, что имя свойства собирается динамически во время выполнения программы, а именно: <blockquote> var someObj = { <br> propName: "Джон" <br> }; <br> Функция propPrefix (str) { <br> var s = "prop"; <br> return s + str; <br> } <br> var someProp = propPrefix ("Name"); // someProp теперь содержит значение 'propName' <br> console.log (someObj [someProp]); // "Джон" </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>
|
||||
|
@@ -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>"bark"</code> в объект <code>ourDog</code> : <code>ourDog.bark = "гав-гав";</code> или <code>ourDog["bark"] = "гав-гав";</code> Теперь, когда мы вызовем <code>ourDog.bark</code> , мы получим значение записанного свойства - <code>"гав-гав"</code>. </section>
|
||||
<section id='description'>
|
||||
Вы можете добавлять новые свойства к существующим объектам JavaScript так же, как вы их модифицировали. Вот как мы добавим свойство <code>"bark"</code> в объект <code>ourDog</code> : <code>ourDog.bark = "гав-гав";</code> или <code>ourDog["bark"] = "гав-гав";</code> Теперь, когда мы вызовем <code>ourDog.bark</code> , мы получим значение записанного свойства - <code>"гав-гав"</code>.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Добавьте свойство <code>"bark"</code> в объект <code>myDog</code> и присвойте этому свойству звук который издает собака, например "гав". Вы можете использовать точку или квадратные скобки для задания свойства объекта.</section>
|
||||
<section id='instructions'>
|
||||
Добавьте свойство <code>"bark"</code> в объект <code>myDog</code> и присвойте этому свойству звук который издает собака, например "гав". Вы можете использовать точку или квадратные скобки для задания свойства объекта.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: Добавьте свойство <code>"bark"</code> в <code>myDog</code> .
|
||||
testString: 'assert(myDog.bark !== undefined, "Add the property <code>"bark"</code> to <code>myDog</code>.");'
|
||||
- text: Не добавляйте свойство <code>"bark"</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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>"a"</code> - "яблоко" <br> <code>"b"</code> - "птица" <br> <code>"c"</code> - "cat" <br> <code>default</code> - "stuff" </section>
|
||||
<section id='instructions'>
|
||||
Напишите оператор switch, чтобы задать <code>answer</code> для следующих условий: <br> <code>"a"</code> - "яблоко" <br> <code>"b"</code> - "птица" <br> <code>"c"</code> - "cat" <br> <code>default</code> - "stuff"
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>switchOfStuff("a")</code> должен иметь значение "apple"
|
||||
testString: 'assert(switchOfStuff("a") === "apple", "<code>switchOfStuff("a")</code> should have a value of "apple"");'
|
||||
- text: <code>switchOfStuff("b")</code> должен иметь значение "bird"
|
||||
testString: 'assert(switchOfStuff("b") === "bird", "<code>switchOfStuff("b")</code> should have a value of "bird"");'
|
||||
- text: <code>switchOfStuff("c")</code> должен иметь значение "cat"
|
||||
testString: 'assert(switchOfStuff("c") === "cat", "<code>switchOfStuff("c")</code> should have a value of "cat"");'
|
||||
- text: <code>switchOfStuff("d")</code> должен иметь значение "stuff"
|
||||
testString: 'assert(switchOfStuff("d") === "stuff", "<code>switchOfStuff("d")</code> should have a value of "stuff"");'
|
||||
- text: <code>switchOfStuff(4)</code> должен иметь значение "stuff"
|
||||
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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>"name"</code> , <code>"legs"</code> и <code>"tails"</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>"name"</code> , <code>"legs"</code> и <code>"tails"</code> . Однако вы также можете использовать числа как свойства. Вы даже можете опустить кавычки для свойств строки с одним словом, а именно: <blockquote> var anotherObject = { <br> сделать: «Форд», <br> 5: «пять», <br> «модель»: «фокус» <br> }; </blockquote> Однако, если ваш объект имеет какие-либо свойства, отличные от строки, JavaScript автоматически приведет их в виде строк.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Создайте объект, представляющий собаку под названием <code>myDog</code> которая содержит свойства <code>"name"</code> (строка), <code>"legs"</code> , <code>"tails"</code> и <code>"friends"</code> . Вы можете установить эти свойства объекта для любых значений, которые вы хотите, поскольку <code>"name"</code> - это строка, <code>"legs"</code> и <code>"tails"</code> - это числа, а <code>"friends"</code> - это массив. </section>
|
||||
<section id='instructions'>
|
||||
Создайте объект, представляющий собаку под названием <code>myDog</code> которая содержит свойства <code>"name"</code> (строка), <code>"legs"</code> , <code>"tails"</code> и <code>"friends"</code> . Вы можете установить эти свойства объекта для любых значений, которые вы хотите, поскольку <code>"name"</code> - это строка, <code>"legs"</code> и <code>"tails"</code> - это числа, а <code>"friends"</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>
|
||||
|
@@ -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 < 5</code> - return "Tiny" <br> <code>num < 10</code> - возврат "Small" <br> <code>num < 15</code> - возврат "Средний" <br> <code>num < 20</code> - возврат "Большой" <br> <code>num >= 20</code> - возврат "Огромный" </section>
|
||||
<section id='instructions'>
|
||||
Напишите прикованные <code>if</code> / <code>else if</code> выражения для выполнения следующих условий: <code>num < 5</code> - return "Tiny" <br> <code>num < 10</code> - возврат "Small" <br> <code>num < 15</code> - возврат "Средний" <br> <code>num < 20</code> - возврат "Большой" <br> <code>num >= 20</code> - возврат "Огромный"
|
||||
</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> должен возвращать "Tiny"
|
||||
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> должен возвращать "Small"
|
||||
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> должен возвращать "Large"
|
||||
testString: 'assert(testSize(15) === "Large", "<code>testSize(15)</code> should return "Large"");'
|
||||
- text: <code>testSize(17)</code> должен вернуть "Large"
|
||||
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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>"Equal"</code> . В противном случае функция вернет <code>"Not Equal"</code> . Чтобы JavaScript мог сравнивать два разных <code>data types</code> (например, <code>numbers</code> и <code>strings</code> ), он должен преобразовывать один тип в другой. Это называется «Типовое принуждение». Однако, как только это произойдет, он может сравнить термины следующим образом: <blockquote> 1 == 1 // true <br> 1 == 2 // false <br> 1 == '1' // true <br> "3" == 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>"Equal"</code> . В противном случае функция вернет <code>"Not Equal"</code> . Чтобы JavaScript мог сравнивать два разных <code>data types</code> (например, <code>numbers</code> и <code>strings</code> ), он должен преобразовывать один тип в другой. Это называется «Типовое принуждение». Однако, как только это произойдет, он может сравнить термины следующим образом: <blockquote> 1 == 1 // true <br> 1 == 2 // false <br> 1 == '1' // true <br> "3" == 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> должен возвращать "Equal"
|
||||
testString: 'assert(testEqual(12) === "Equal", "<code>testEqual(12)</code> should return "Equal"");'
|
||||
- text: <code>testEqual("12")</code> должен возвращать "Equal"
|
||||
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>
|
||||
|
@@ -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>></code> ), сравнивает значения двух чисел. Если число слева больше числа справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Как и оператор равенства, большее, чем оператор, преобразует типы данных при сравнении. <strong>Примеры</strong> <blockquote> 5> 3 // true <br> 7> '3' // true <br> 2> 3 // false <br> '1'> 9 // false </blockquote></section>
|
||||
<section id='description'>
|
||||
Чем больше оператор ( <code>></code> ), сравнивает значения двух чисел. Если число слева больше числа справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Как и оператор равенства, большее, чем оператор, преобразует типы данных при сравнении. <strong>Примеры</strong> <blockquote> 5> 3 // true <br> 7> '3' // true <br> 2> 3 // false <br> '1'> 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>></code> как минимум дважды
|
||||
testString: 'assert(code.match(/val\s*>\s*("|")*\d+("|")*/g).length > 1, "You should use the <code>></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>></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>
|
||||
|
@@ -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>>=</code> ), то сравниваются значения двух чисел. Если число слева больше или равно числу справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Подобно оператору равенства, который <code>greater than or equal to</code> оператору, будет преобразовывать типы данных при сравнении. <strong>Примеры</strong> <blockquote> 6> = 6 // true <br> 7> = '3' // true <br> 2> = 3 // false <br> '7'> = 9 // false </blockquote></section>
|
||||
<section id='description'>
|
||||
Чем <code>greater than or equal to</code> оператору ( <code>>=</code> ), то сравниваются значения двух чисел. Если число слева больше или равно числу справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Подобно оператору равенства, который <code>greater than or equal to</code> оператору, будет преобразовывать типы данных при сравнении. <strong>Примеры</strong> <blockquote> 6> = 6 // true <br> 7> = '3' // true <br> 2> = 3 // false <br> '7'> = 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>>=</code> по крайней мере, дважды'
|
||||
testString: 'assert(code.match(/val\s*>=\s*("|")*\d+("|")*/g).length > 1, "You should use the <code>>=</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>>=</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>
|
||||
|
@@ -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! = "1" // false <br> 1! = '1' // 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! = "1" // false <br> 1! = '1' // 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> должен возвращать "Equal"
|
||||
testString: 'assert(testNotEqual(99) === "Equal", "<code>testNotEqual(99)</code> should return "Equal"");'
|
||||
- text: <code>testNotEqual("99")</code> должен возвращать "Equal"
|
||||
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("12")</code> должен возвращать «Не равно»
|
||||
testString: 'assert(testNotEqual("12") === "Not Equal", "<code>testNotEqual("12")</code> should return "Not Equal"");'
|
||||
- text: <code>testNotEqual("bob")</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>
|
||||
|
@@ -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><</code> ) сравнивает значения двух чисел. Если число слева меньше числа справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Как и оператор равенства, <dfn>меньше, чем</dfn> оператор, преобразует типы данных при сравнении. <strong>Примеры</strong> <blockquote> 2 <5 // true <br> '3' <7 // true <br> 5 <5 // false <br> 3 <2 // false <br> '8' <4 // false </blockquote></section>
|
||||
<section id='description'>
|
||||
<dfn>Менее чем</dfn> оператор ( <code><</code> ) сравнивает значения двух чисел. Если число слева меньше числа справа, оно возвращает <code>true</code> . В противном случае возвращается <code>false</code> . Как и оператор равенства, <dfn>меньше, чем</dfn> оператор, преобразует типы данных при сравнении. <strong>Примеры</strong> <blockquote> 2 <5 // true <br> '3' <7 // true <br> 5 <5 // false <br> 3 <2 // false <br> '8' <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><</code> по крайней мере дважды
|
||||
testString: 'assert(code.match(/val\s*<\s*("|")*\d+("|")*/g).length > 1, "You should use the <code><</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><</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>
|
||||
|
@@ -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><=</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 <= 5 // true <br> '7' <= 7 // true <br> 5 <= 5 // true <br> 3 <= 2 // false <br> '8' <= 4 // false </blockquote></section>
|
||||
<section id='description'>
|
||||
Оператор ( <code><=</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 <= 5 // true <br> '7' <= 7 // true <br> 5 <= 5 // true <br> 3 <= 2 // false <br> '8' <= 4 // false </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Добавьте оператор ( <code><=</code> ) чтобы функция работала правильно. </section>
|
||||
<section id='instructions'>
|
||||
Добавьте оператор ( <code><=</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><=</code> по крайней мере, дважды'
|
||||
testString: 'assert(code.match(/val\s*<=\s*("|")*\d+("|")*/g).length > 1, "You should use the <code><=</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><=</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>
|
||||
|
@@ -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 === '3' // false </blockquote> Во втором примере <code>3</code> является типом <code>Number</code> а <code>'3'</code> - <code>String</code> . </section>
|
||||
<section id='description'>
|
||||
Строгое равенство ( <code>===</code> ) является аналогом оператора равенства ( <code>==</code> ). Однако, в отличие от оператора равенства, который пытается преобразовать оба значения в общий тип, строгий оператор равенства не выполняет преобразование типа. Если сравниваемые значения имеют разные типы, они считаются неравными, а оператор строгого равенства возвращает false. <strong>Примеры</strong> <blockquote> 3 === 3 // true <br> 3 === '3' // false </blockquote> Во втором примере <code>3</code> является типом <code>Number</code> а <code>'3'</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("7")</code> должен возвращать "Не равно"
|
||||
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>
|
||||
|
@@ -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! == '3' // 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! == '3' // 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("17")</code> должен возвращать "Не равно"
|
||||
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("bob")</code> должен возвращать "Не равно"
|
||||
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>
|
||||
|
@@ -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>&&</code> ) возвращают <code>true</code> тогда и только тогда, когда <dfn>операнды</dfn> слева и справа от него являются истинными. Тот же эффект может быть достигнут путем вложения выражения if внутри другого, если: <blockquote> если (num> 5) { <br> если (num <10) { <br> вернуть «Да»; <br> } <br> } <br> вернуть «Нет»; </blockquote> будет возвращаться только «Да», если <code>num</code> больше <code>5</code> и меньше <code>10</code> . Та же логика может быть записана как: <blockquote> if (num> 5 && num <10) { <br> вернуть «Да»; <br> } <br> вернуть «Нет»; </blockquote></section>
|
||||
<section id='description'>
|
||||
Иногда вам нужно проверять несколько штук одновременно. <dfn>Логический и</dfn> operator ( <code>&&</code> ) возвращают <code>true</code> тогда и только тогда, когда <dfn>операнды</dfn> слева и справа от него являются истинными. Тот же эффект может быть достигнут путем вложения выражения if внутри другого, если: <blockquote> если (num> 5) { <br> если (num <10) { <br> вернуть «Да»; <br> } <br> } <br> вернуть «Нет»; </blockquote> будет возвращаться только «Да», если <code>num</code> больше <code>5</code> и меньше <code>10</code> . Та же логика может быть записана как: <blockquote> if (num> 5 && num <10) { <br> вернуть «Да»; <br> } <br> вернуть «Нет»; </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Объедините два оператора if в один оператор, который вернет <code>"Yes"</code> если значение <code>val</code> меньше или равно <code>50</code> и больше или равно <code>25</code> . В противном случае вернется <code>"No"</code> . </section>
|
||||
<section id='instructions'>
|
||||
Объедините два оператора if в один оператор, который вернет <code>"Yes"</code> если значение <code>val</code> меньше или равно <code>50</code> и больше или равно <code>25</code> . В противном случае вернется <code>"No"</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>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> должен возвращать "Нет"
|
||||
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>
|
||||
|
@@ -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> 10) { <br> вернуть «Нет»; <br> } <br> if (num <5) { <br> вернуть «Нет»; <br> } <br> вернуть «Да»; </blockquote> вернет «Да» только в том случае, если <code>num</code> находится между <code>5</code> и <code>10</code> (включено 5 и 10). Та же логика может быть записана как: <blockquote> если (num> 10 || num <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> 10) { <br> вернуть «Нет»; <br> } <br> if (num <5) { <br> вернуть «Нет»; <br> } <br> вернуть «Да»; </blockquote> вернет «Да» только в том случае, если <code>num</code> находится между <code>5</code> и <code>10</code> (включено 5 и 10). Та же логика может быть записана как: <blockquote> если (num> 10 || num <5) { <br> вернуть «Нет»; <br> } <br> вернуть «Да»; </blockquote>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Объедините два оператора <code>if</code> в один оператор, который возвращает <code>"Outside"</code> если <code>val</code> не находится между <code>10</code> и <code>20</code> , включительно. В противном случае верните <code>"Inside"</code> . </section>
|
||||
<section id='instructions'>
|
||||
Объедините два оператора <code>if</code> в один оператор, который возвращает <code>"Outside"</code> если <code>val</code> не находится между <code>10</code> и <code>20</code> , включительно. В противном случае верните <code>"Inside"</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> должен возвращать "Outside"
|
||||
testString: 'assert(testLogicalOr(0) === "Outside", "<code>testLogicalOr(0)</code> should return "Outside"");'
|
||||
- text: <code>testLogicalOr(9)</code> должен возвращать "Outside"
|
||||
testString: 'assert(testLogicalOr(9) === "Outside", "<code>testLogicalOr(9)</code> should return "Outside"");'
|
||||
- text: <code>testLogicalOr(10)</code> должен возвращать "Inside"
|
||||
testString: 'assert(testLogicalOr(10) === "Inside", "<code>testLogicalOr(10)</code> should return "Inside"");'
|
||||
- text: <code>testLogicalOr(15)</code> должен возвращать "Inside"
|
||||
testString: 'assert(testLogicalOr(15) === "Inside", "<code>testLogicalOr(15)</code> should return "Inside"");'
|
||||
- text: <code>testLogicalOr(19)</code> должен возвращать "Inside"
|
||||
testString: 'assert(testLogicalOr(19) === "Inside", "<code>testLogicalOr(19)</code> should return "Inside"");'
|
||||
- text: <code>testLogicalOr(20)</code> должен возвращать "Inside"
|
||||
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> должен возвращать "Outside"
|
||||
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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>"This is the start. "</code> и <code>"This is the end."</code> используя оператор <code>+</code> . </section>
|
||||
<section id='instructions'>
|
||||
Создайте <code>myStr</code> из строк <code>"This is the start. "</code> и <code>"This is the end."</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>
|
||||
|
@@ -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>"This is the first sentence. "</code> и <code>"This is the second sentence."</code> используя оператор <code>+=</code> . Используйте оператор <code>+=</code> аналогичный тому, как он отображается в редакторе. Начните с назначения первой строки <code>myStr</code> , затем добавьте вторую строку. </section>
|
||||
<section id='instructions'>
|
||||
Постройте <code>myStr</code> в нескольких строках, <code>myStr</code> эти две строки: <code>"This is the first sentence. "</code> и <code>"This is the second sentence."</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>
|
||||
|
@@ -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>"My name is "</code> и <code>" and I am well!"</code> </section>
|
||||
<section id='instructions'>
|
||||
Установите <code>myName</code> в строку, равную вашему имени, и создайте <code>myStr</code> с <code>myName</code> между строками <code>"My name is "</code> и <code>" and I am well!"</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>
|
||||
|
@@ -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 > 0</code> . Мы будем уменьшать <code>i</code> на 2 каждый цикл с <code>i -= 2</code> . <blockquote> var ourArray = []; <br> для (var i = 10; i> 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 > 0</code> . Мы будем уменьшать <code>i</code> на 2 каждый цикл с <code>i -= 2</code> . <blockquote> var ourArray = []; <br> для (var i = 10; i> 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>
|
||||
|
@@ -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, 'J', 'Q', 'K', 'A' </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, 'J', 'Q', 'K', 'A' </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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>"12"</code> , <code>"dog"</code> или <code>"123 cats"</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>"12"</code> , <code>"dog"</code> или <code>"123 cats"</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>
|
||||
|
@@ -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 = "your name";</code> <code>"your name"</code> называется <dfn>строковым</dfn> <dfn>литералом</dfn> . Это строка, потому что это серия из нуля или более символов, заключенных в одинарные или двойные кавычки. </section>
|
||||
<section id='description'>
|
||||
Раньше мы использовали код <code>var myName = "your name";</code> <code>"your name"</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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>"tails"</code> из <code>myDog</code> . Вы можете использовать либо точечную, либо скобку. </section>
|
||||
<section id='instructions'>
|
||||
Удалите свойство <code>"tails"</code> из <code>myDog</code> . Вы можете использовать либо точечную, либо скобку.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: Удалите свойство <code>"tails"</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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>\'</code> </td> <td> одиночная цитата </td></tr><tr><td> <code>\"</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>\'</code> </td> <td> одиночная цитата </td></tr><tr><td> <code>\"</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>
|
||||
|
@@ -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>"</code> или <code>'</code> внутри вашей строки? В JavaScript вы можете <dfn>избежать</dfn> цитаты, рассматривая ее как конец строки, помещая <dfn>обратную косую черту</dfn> ( <code>\</code> ) перед цитатой. <code>var sampleStr = "Alan said, \"Peter is learning JavaScript\".";</code> Это сигнализирует JavaScript, что следующая цитата не является концом строки, но должна появляться внутри строки. Поэтому, если вы должны были напечатать это на консоли, вы бы получили: <code>Alan said, "Peter is learning JavaScript".</code> </section>
|
||||
<section id='description'>
|
||||
Когда вы определяете строку, вы должны начинать и заканчивать одиночную или двойную кавычку. Что происходит, когда вам нужна буквальная цитата: <code>"</code> или <code>'</code> внутри вашей строки? В JavaScript вы можете <dfn>избежать</dfn> цитаты, рассматривая ее как конец строки, помещая <dfn>обратную косую черту</dfn> ( <code>\</code> ) перед цитатой. <code>var sampleStr = "Alan said, \"Peter is learning JavaScript\".";</code> Это сигнализирует JavaScript, что следующая цитата не является концом строки, но должна появляться внутри строки. Поэтому, если вы должны были напечатать это на консоли, вы бы получили: <code>Alan said, "Peter is learning JavaScript".</code>
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Используйте <dfn>обратную косую черту,</dfn> чтобы назначить строку переменной <code>myStr</code> чтобы, если вы должны были ее распечатать на консоль, вы увидите: « <code>I am a "double quoted" string inside "double quotes".</code> </section>
|
||||
<section id='instructions'>
|
||||
Используйте <dfn>обратную косую черту,</dfn> чтобы назначить строку переменной <code>myStr</code> чтобы, если вы должны были ее распечатать на консоль, вы увидите: « <code>I am a "double quoted" string inside "double quotes".</code>
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: Вы должны использовать две двойные кавычки ( <code>"</code> ) и четыре сэкономленные двойные кавычки ( <code>\"</code> ).
|
||||
testString: 'assert(code.match(/\\"/g).length === 4 && code.match(/[^\\]"/g).length === 2, "You should use two double quotes (<code>"</code>) and four escaped double quotes (<code>\"</code>).");'
|
||||
- text: 'Переменная myStr должна содержать строку: <code>I am a "double quoted" string inside "double quotes".</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>"</code>) and four escaped double quotes (<code>\"</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>
|
||||
|
@@ -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>"Alan Peter".length; // 10</code> Например, если мы создали переменную <code>var firstName = "Charles"</code> , мы могли бы узнать, как долго строка <code>"Charles"</code> используется с использованием свойства <code>firstName.length</code> . </section>
|
||||
<section id='description'>
|
||||
Вы можете найти длину значения <code>String</code> , написав <code>.length</code> после строковой переменной или строкового литерала. <code>"Alan Peter".length; // 10</code> Например, если мы создали переменную <code>var firstName = "Charles"</code> , мы могли бы узнать, как долго строка <code>"Charles"</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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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 = "Hat"; <br> function myFun () { <br> var someVar = "Голова"; <br> return someVar; <br> } </blockquote> Функция <code>myFun</code> вернет <code>"Head"</code> потому что присутствует <code>local</code> версия переменной. </section>
|
||||
<section id='description'>
|
||||
Можно иметь как <dfn>локальные, так</dfn> и <dfn>глобальные</dfn> переменные с тем же именем. Когда вы это делаете, <code>local</code> переменная имеет приоритет над <code>global</code> переменной. В этом примере: <blockquote> var someVar = "Hat"; <br> function myFun () { <br> var someVar = "Голова"; <br> return someVar; <br> } </blockquote> Функция <code>myFun</code> вернет <code>"Head"</code> потому что присутствует <code>local</code> версия переменной.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
<section id="instructions"> Добавьте локальную переменную в функцию <code>myOutfit</code> чтобы переопределить значение <code>outerWear</code> с помощью <code>"sweater"</code> . </section>
|
||||
<section id='instructions'>
|
||||
Добавьте локальную переменную в функцию <code>myOutfit</code> чтобы переопределить значение <code>outerWear</code> с помощью <code>"sweater"</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>"sweater"</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>
|
||||
|
@@ -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> "Отверстие в одном!" </td></tr><tr><td> <= par - 2 </td><td> «Орел» </td></tr><tr><td> пар - 1 </td><td> "Птичка" </td></tr><tr><td> паритет </td><td> «Пар» </td></tr><tr><td> par + 1 </td><td> «Пугало» </td></tr><tr><td> par + 2 </td><td> "Двойной Богей" </td></tr><tr><td> > = par + 3 </td><td> "Иди домой!" </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> "Отверстие в одном!" </td></tr><tr><td> <= par - 2 </td><td> «Орел» </td></tr><tr><td> пар - 1 </td><td> "Птичка" </td></tr><tr><td> паритет </td><td> «Пар» </td></tr><tr><td> par + 1 </td><td> «Пугало» </td></tr><tr><td> par + 2 </td><td> "Двойной Богей" </td></tr><tr><td> > = par + 3 </td><td> "Иди домой!" </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>
|
||||
|
@@ -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>
|
||||
|
@@ -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>
|
||||
|
@@ -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> 15) { <br> возвращение «Больше 15»; <br> } else if (num <5) { <br> return «Меньше 5»; <br> } else { <br> возвращение «от 5 до 15»; <br> } </blockquote></section>
|
||||
<section id='description'>
|
||||
Если у вас есть несколько условий, которые необходимо устранить, вы можете связать, <code>if</code> инструкции вместе с инструкциями <code>else if</code> . <blockquote> если (num> 15) { <br> возвращение «Больше 15»; <br> } else if (num <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> должен возвращать значение "Меньше 5"
|
||||
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>
|
||||
|
@@ -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> 10) { <br> возвращение «Больше, чем 10»; <br> } else { <br> вернуть «10 или меньше»; <br> } </blockquote></section>
|
||||
<section id='description'>
|
||||
Когда условие для оператора <code>if</code> истинно, выполняется блок кода после него. Как насчет того, когда это условие ложно? Обычно ничего не происходило. С помощью инструкции <code>else</code> может выполняться альтернативный блок кода. <blockquote> если (num> 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>
|
||||
|
@@ -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 < 10</code> . Мы будем увеличивать <code>i</code> на 2 каждый цикл с <code>i += 2</code> . <blockquote> var ourArray = []; <br> для (var i = 0; i <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 < 10</code> . Мы будем увеличивать <code>i</code> на 2 каждый цикл с <code>i += 2</code> . <blockquote> var ourArray = []; <br> для (var i = 0; i <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>
|
||||
|
@@ -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 <arr.length; i ++) { <br> console.log (обр [я]); <br> } </blockquote> Помните, что массивы имеют нулевую нумерацию, что означает, что последний индекс массива - длина - 1. Наше <dfn>условие</dfn> для этого цикла равно <code>i < 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 <arr.length; i ++) { <br> console.log (обр [я]); <br> } </blockquote> Помните, что массивы имеют нулевую нумерацию, что означает, что последний индекс массива - длина - 1. Наше <dfn>условие</dfn> для этого цикла равно <code>i < 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>
|
||||
|
@@ -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 <5); </blockquote> Это ведет себя так же, как вы ожидали бы с любым другим типом цикла, и результирующий массив будет выглядеть как <code>[0, 1, 2, 3, 4]</code> . Однако то, что делает <code>do...while</code> отличается от других циклов, - это то, как оно ведет себя, когда условие не выполняется при первой проверке. Давайте посмотрим на это в действии. Вот регулярный цикл while, который будет запускать код в цикле, пока <code>i < 5</code> . <blockquote> var ourArray = []; <br> var i = 5; <br> тогда как (i <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 <5); </blockquote> В этом случае мы инициализируем значение <code>i</code> как 5, как и в цикле while. Когда мы переходим к следующей строке, нет никакой проверки значения <code>i</code> , поэтому мы переходим к коду внутри фигурных скобок и выполняем его. Мы добавим один элемент в массив и увеличим <code>i</code> до того, как мы перейдем к проверке состояния. Затем, когда мы перейдем к проверке, если <code>i < 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 <5); </blockquote> Это ведет себя так же, как вы ожидали бы с любым другим типом цикла, и результирующий массив будет выглядеть как <code>[0, 1, 2, 3, 4]</code> . Однако то, что делает <code>do...while</code> отличается от других циклов, - это то, как оно ведет себя, когда условие не выполняется при первой проверке. Давайте посмотрим на это в действии. Вот регулярный цикл while, который будет запускать код в цикле, пока <code>i < 5</code> . <blockquote> var ourArray = []; <br> var i = 5; <br> тогда как (i <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 <5); </blockquote> В этом случае мы инициализируем значение <code>i</code> как 5, как и в цикле while. Когда мы переходим к следующей строке, нет никакой проверки значения <code>i</code> , поэтому мы переходим к коду внутри фигурных скобок и выполняем его. Мы добавим один элемент в массив и увеличим <code>i</code> до того, как мы перейдем к проверке состояния. Затем, когда мы перейдем к проверке, если <code>i < 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>
|
||||
|
@@ -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 < 5</code> истинно. Мы будем увеличивать <code>i</code> на <code>1</code> в каждой итерации цикла с <code>i++</code> качестве нашего <code>final-expression</code> . <blockquote> var ourArray = []; <br> для (var i = 0; i <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 < 5</code> истинно. Мы будем увеличивать <code>i</code> на <code>1</code> в каждой итерации цикла с <code>i++</code> качестве нашего <code>final-expression</code> . <blockquote> var ourArray = []; <br> для (var i = 0; i <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>
|
||||
|
@@ -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 <5) { <br> ourArray.push (я); <br> я ++; <br> } </blockquote> Попробуем получить цикл while для работы, нажав значения в массив. </section>
|
||||
<section id='description'>
|
||||
Вы можете запустить один и тот же код несколько раз, используя цикл. Первый тип цикла мы узнаем , что называется « в <code>while</code> » цикл , так как он работает « а» заданное условие истинно , и не остановится , как только это условие уже не так. <blockquote> var ourArray = []; <br> var i = 0; <br> тогда как (i <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>
|
||||
|
@@ -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 = "foo"; <br> console.log (LOC); <br> } <br> MyTest (); // logs "foo" <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 = "foo"; <br> console.log (LOC); <br> } <br> MyTest (); // logs "foo" <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>
|
||||
|
@@ -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 <1) { <br> return «Меньше одного»; <br> } else if (x <2) { <br> return «Меньше двух»; <br> } else { <br> return «Больше или равно двум»; <br> } <br> } </blockquote> А второй просто переключает порядок утверждений: <blockquote> функциональная панель (x) { <br> если (x <2) { <br> return «Меньше двух»; <br> } else if (x <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 <1) { <br> return «Меньше одного»; <br> } else if (x <2) { <br> return «Меньше двух»; <br> } else { <br> return «Больше или равно двум»; <br> } <br> } </blockquote> А второй просто переключает порядок утверждений: <blockquote> функциональная панель (x) { <br> если (x <2) { <br> return «Меньше двух»; <br> } else if (x <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>
|
||||
|
@@ -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>[["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), "<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>["cat", 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>
|
||||
|
@@ -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>["dog", 3]</code> на конец переменной <code>myArray</code> . </section>
|
||||
<section id='instructions'>
|
||||
Нажмите <code>["dog", 3]</code> на конец переменной <code>myArray</code> .
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
<section id='tests'>
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: '<code>myArray</code> должен теперь равняться <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), "<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>
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user