fix(guide): simplify directory structure

This commit is contained in:
Mrugesh Mohapatra
2018-10-16 21:26:13 +05:30
parent f989c28c52
commit da0df12ab7
35752 changed files with 0 additions and 317652 deletions

View File

@@ -0,0 +1,70 @@
---
title: Boo Who
localeTitle: Boo Who
---
![](//discourse-user-assets.s3.amazonaws.com/original/2X/3/3c8584a085a0deaea66b3400e6321eeadab552a2.jpg)
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### Проблема Объяснение:
Эта программа очень проста, трюк заключается в том, чтобы понять, что такое булевский примитив. Программы требуют истинного или ложного ответа.
#### Связанные ссылки
* [логический](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
* Вам нужно будет проверить тип параметра, чтобы узнать, является ли оно логическим.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
* Чтобы проверить тип параметра, вы можете использовать `typeof` .
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
* Поскольку вы должны возвращать true или false, вы можете использовать операторы if или просто возвращать значение boolean, используемое для оператора if.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```javascript
function booWho(bool) {
return typeof bool === 'boolean';
}
// test here
booWho(null);
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLnK/0)
# Код Объяснение:
Использует оператор `typeof` чтобы проверить, является ли переменная логической. Если это так, оно вернет `true` . В противном случае, если это какой-либо другой тип, он вернет `false` .
#### Связанные ссылки
* Использование typeof
* [тип](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,220 @@
---
title: Chunky Monkey
localeTitle: Короткая обезьяна
---
![](//discourse-user-assets.s3.amazonaws.com/original/2X/a/aadd6bead83ab7d79a795c326f005a89e6ad81f5.png)
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Наша цель для этого алгоритма состоит в том, чтобы разделить `arr` (первый аргумент) на более мелкие куски массивов с длиной, предоставленной `size` (второй аргумент). Для завершения этого алгоритма необходимо выполнить 4 зеленых проверки (цели), которые необходимо выполнить нашему коду:
1. `(['a', 'b', 'c', 'd'], 2)` ожидается `[['a', 'b'], ['c', 'd']]`
2. `([0, 1, 2, 3, 4, 5], 3)` ожидается `[[0, 1, 2], [3, 4, 5]]`
3. `([0, 1, 2, 3, 4, 5], 2)` ожидается `[[0, 1], [2, 3], [4, 5]]`
4. `([0, 1, 2, 3, 4, 5], 4)` ожидается `[[0, 1, 2, 3], [4, 5]]`
#### Связанные ссылки
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Array.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
В приведенных выше ссылках предлагается использовать `Array.push()` , поэтому давайте начнем с создания первого массива для хранения меньших массивов, которые мы скоро получим так:
```javascript
var newArray = [];
```
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Далее нам понадобится `for loop` для циклического прохождения через `arr` .
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Наконец, нам нужен метод для фактического разделения, и мы можем использовать `Array.slice()` для этого. Ключом к этому алгоритму является понимание того, как все `for loop` , `size` , `Array.slice()` и `Array.push()` работают вместе.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```javascript
function chunkArrayInGroups(arr, size) {
var temp = [];
var result = [];
for (var a = 0; a < arr.length; a++) {
if (a % size !== size - 1)
temp.push(arr[a]);
else {
temp.push(arr[a]);
result.push(temp);
temp = [];
}
}
if (temp.length !== 0)
result.push(temp);
return result;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/24)
### Код Объяснение:
* Во-первых, мы создаем две пустые массивы, называемые `temp` и `result` , которые мы в конечном итоге вернем.
* Наша **для петли** петли , пока не равно или больше , чем длина массива в нашем тесте. `a`
* Внутри нашего цикла мы нажимаем `temp` используя `temp.push(arr[a]);` если остальная часть `a / size` не равна `size - 1` .
* В противном случае мы нажимаем на `temp` , нажимаем `temp` на переменную `result` и сбрасываем `temp` в пустой массив.
* Затем, если `temp` не пустой массив, мы подталкиваем его к `result` .
* Наконец, мы возвращаем значение `result` .
#### Связанные ссылки
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Для циклов](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ": Подсолнечное:") Решение промежуточного кода:
```javascript
function chunkArrayInGroups(arr, size) {
// Break it up.
var arr2 = [];
for (var i = 0; i < arr.length; i+=size) {
arr2.push(arr.slice(i , i+size));
}
return arr2;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/Cj9x/3)
### Код Объяснение:
* Сначала мы создаем пустой массив `arr2` где мы будем хранить наши «куски».
* Цикл for начинается с нуля, каждый раз увеличивается по `size` через цикл и останавливается, когда он достигает `arr.length` .
* Обратите внимание, что это для цикла не проходит через `arr` . Вместо этого мы используем цикл для генерации чисел, которые мы можем использовать в качестве индексов для срезания массива в правильных местоположениях.
* Внутри нашего цикла мы создаем каждый фрагмент с помощью `arr.slice(i, i+size)` и добавляем это значение к `arr2` с `arr2.push()` .
* Наконец, мы возвращаем значение `arr2` .
#### Связанные ссылки
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Array.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)
* [Для циклов](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода:
```javascript
function chunkArrayInGroups(arr, size) {
// Break it up.
var newArr = [];
var i = 0;
while (i < arr.length) {
newArr.push(arr.slice(i, i+size));
i += size;
}
return newArr;
}
chunkArrayInGroups(["a", "b", "c", "d"], 2);
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/26)
### Код Объяснение:
* Во-первых, мы создаем две переменные. `newArr` - пустой массив, на который мы будем нажимать. Мы также имеем переменную `i` равную нулю, для использования в нашем цикле while.
* Наш цикл while цикл до тех пор, пока `i` будет равен или больше длины массива в нашем тесте.
* Внутри нашего цикла, мы выдвигаем к `newArr` массив с помощью `arr.slice(i, i+size)` . Впервые это петли, это будет выглядеть примерно так:
newArr.push (arr.slice (1, 1 + 2))
* После нажатия на `newArr` мы добавляем переменную `size` в `i` .
* Наконец, мы возвращаем значение `newArr` .
#### Связанные ссылки
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Array.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)
* [В то время как петли](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/while)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение кода 2:
```javascript
function chunkArrayInGroups(arr, size) {
var newArr = [];
while (arr.length) {
newArr.push(arr.splice(0,size));
}
return newArr;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/579)
### Код Объяснение:
* Во-первых, мы создаем переменную. `newArr` - пустой массив, на который мы будем нажимать.
* Наше `while` петли петли , пока длина массива в нашем тесте не является 0.
* Внутри нашего цикла, мы выдвигаем к `newArr` массива с помощью `arr.splice(0, size)` .
* Для каждой итерации в `while` цикла, он удаляет `size` количество элементов из передней части `arr` и толкать их в виде массива `newArr` .
* Наконец, мы возвращаем значение `newArr` .
#### Связанные ссылки
* [Array.push ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [Array.splice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
* [В то время как петли](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/while)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода 3:
```javascript
function chunkArrayInGroups(arr, size) {
if (arr.length <= size){
return [arr];
}
else {
return [arr.slice(0,size)].concat(chunkArrayInGroups(arr.slice(size),size));
}
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/579)
### Код Объяснение:
* Массив меньше размера возвращается вложенным.
* Для любого массива, большего, чем размер, он разбивается на две части. Первый сегмент вложен и согласован со вторым вторым сегментом, который делает рекурсивный вызов.
#### Связанные ссылки
* [Рекурсия](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Recursion)
* [Array.splice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Увидеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,36 @@
---
title: Confirm the Ending
localeTitle: Подтвердить завершение
---
## Подтвердить завершение
# 🌻 Решение промежуточного кода:
(Декларативный подход)
```javascript
function confirmEnding(str, target) {
// "Never give up and good luck will find you."
// -- Falcor
return str.slice(str.length - target.length) === target;
}
confirmEnding("He has to give me a new name", "name");
```
#### 🚀 [Код запуска](https://repl.it/repls/SardonicRoundAfkgaming)
# Код Объяснение:
* Сначала мы используем метод `slice` копирования строки.
* Чтобы получить последние символы в `str` эквивалентные длине `target` , мы используем метод `slice` .
* Первый параметр внутри метода `slice` является начальным индексом, а вторым параметром будет конечный индекс.
* Например, `str.slice(10, 17)` вернется, `give me` .
* В этом случае мы включаем только один параметр, который будет скопировать все из начального индекса.
* Мы вычитаем длину `str` и длину `target` , таким образом, мы получим последние оставшиеся символы, эквивалентные длине `target` .
* Наконец, мы сравниваем результат возврата среза к `target` и проверяем, имеют ли они одинаковые символы.
### Связанные ссылки
* [String.prototype.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice)

View File

@@ -0,0 +1,67 @@
---
title: Convert Celsius to Fahrenheit
localeTitle: Преобразование Цельсия в Фаренгейт
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Алгоритм преобразования от Цельсия в Фаренгейт - это температура в градусах Цельсия `9/5` и плюс `32` .
Вам дается переменная **цельсия,** представляющая температуру в градусах Цельсия. Используйте переменную **Фаренгейта, которая** уже определена, и примените алгоритм, чтобы присвоить ей соответствующую температуру в Фаренгейте.
#### Связанные ссылки
* [Порядок работы: PEMDAS](http://www.purplemath.com/modules/orderops.htm)
* [Порядок работы: видео](https://www.khanacademy.org/math/pre-algebra/order-of-operations/order_of_operations/v/order-of-operations)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Взгляните на код. Существует область, которую вы не должны редактировать. Оттуда спросите себя - что там используется, чего я раньше не видел?
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Имейте в виду, что **порядок работы** проверяет ссылку в разделе _ссылок_ для получения дополнительной информации.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```javascript
function convertToF(celsius) {
// Only change code below this line
var fahrenheit = (celsius * (9/5)) + 32;
// Only change code above this line
if ( typeof fahrenheit !== 'undefined' ) {
return fahrenheit;
} else {
return 'fahrenheit not defined';
}
}
// Change the inputs below to test your code
convertToF(30);
```
### Код Объяснение:
* Объявите переменную **Фаренгейта** .
* Убедитесь, что правильный порядок арифметических операций сопровождается использованием скобок ( `()` ), когда это необходимо.
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,115 @@
---
title: Factorialize a Number
localeTitle: Факториализация номера
---
![Рекурсия](//discourse-user-assets.s3.amazonaws.com/original/2X/d/dcf927a2e8c3beb7a9c28770153821982398bd99.jpg)
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
## ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Верните факториал предоставленного целого числа. Если целое число представлено буквой n, факториал является произведением всех положительных целых чисел, меньших или равных n.
Факториалы часто представлены сокращенной нотой n!
Например: `5! = 1 * 2 * 3 * 4 * 5 = 120`
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Это легко начинается с `0! = 1` , так что вы можете идти вперед и просто `return 1` туда `return 1` .
Мы можем использовать это как `if` , чтобы разбить цикл, который мы собираемся создать, используя **рекурсивную функцию** . Он будет проверять, является ли номер, который вы дали функции, 0 (это будет конец вашей факториала). Функции «заканчиваются», когда они возвращают что-либо. На самом деле, **все** функции без явного `return` заявления вернут `undefined` .
Именно поэтому **вместо** того, чтобы _«закончить»_ , функция всегда говорит _«вернулась»_ . А теперь это ...
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
**Понимание рекурсии**
Рекурсия относится к функции, повторяющей (вызывающую). В этом случае мы, в основном , возвращая заданное число (то есть 5), умноженное на функции сам по себе , но на этот раз значение , переданное в параметр _NUM_ является `num-1` (который первоначально переводит до 4). Сама функция будет **запущена внутри самой** интересной, а?
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
**Понимание потока**
Первое **возвращаемое** значение может быть визуализировано лучше, если вы подумаете о тех операциях скобок, которые вы сделали в средней школе, где вы делаете математику внутри каждой круглой скобки изнутри, скобки и квадратной скобки, пока не получите окончательный результат (всего). На этот раз это то же самое, посмотрите на поток программы:
### Во время первого выполнения функции:
\[ **num** = 5\]
Является ли 5 _равным_ 1 или 0? **Нет** ---> Оки доки, давайте продолжим ...
**Возвращает:**
( **5** _(_ второе исполнение\_: **4** \_ ( ретье исполнение_ : **3** _(_ четвертое исполнение\_: **2** \_ _пятое выполнение_ : **1** ))))
То, что он возвращает, можно рассматривать как `(5*(4*(3*(2*1))))` или просто `5 * 4 * 3 * 2 * 1` , и функция вернет результат этой операции: `120` . Теперь давайте посмотрим, что делают остальные казни:
### Во время остальных казней:
**Второе выполнение** : _num_ = 5-1 = **4** -> _num_ 0 или 1? нет
\-> вернуть умножение между 4 и следующим результатом, когда _num_ теперь 4-1.
**Третье выполнение** : _num_ = 4 - 1 = **3** -> _num_ 0 или 1? нет
\-> вернуть умножение между 3 и следующим результатом, когда _num_ теперь 3-1.
**Четвертое выполнение** : _num_ = 3-1 = **2** -> _num_ 0 или 1? нет
\-> вернуть умножение между 2 и следующим результатом, когда _num_ теперь 2-1.
**Пятое выполнение** : _num_ = 2-1 = **1** -> _num_ 0 или 1? Ага
\-> возврат **1** . И здесь рекурсия прекращается, потому что больше нет казней.
Понял? ![:wink:](https://forum.freecodecamp.com/images/emoji/emoji_one/wink.png?v=3 ": Подмигивать:")
> _попытаться решить проблему сейчас_
#### Связанные ссылки
* [Функции JS](https://www.youtube.com/watch?v=R8SjM4DKK80)
* [Рекурсия в JS](https://www.youtube.com/watch?v=k7-N8R0-KY4)
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Код решения:
```
function factorialize(num) {
if (num === 0) { return 1; }
return num * factorialize(num-1);
}
factorialize(5);
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/1)
## Код Объяснение:
Обратите внимание, что в первой строке мы имеем терминальное условие, то есть условие проверки конца рекурсии. Если `num == 0` , то мы возвращаем 1, то есть эффективно заканчиваем рекурсию и информируем стек, чтобы распространить это значение на верхние уровни. Если у нас нет этого условия, рекурсия будет продолжаться до тех пор, пока пространство стека не будет потреблено, что приведет к [переполнению стека](https://en.wikipedia.org/wiki/Stack_overflow) .
### Связанные ссылки
* [Рекурсия](https://www.codecademy.com/en/courses/javascript-lesson-205/0/1)
* [Factorialization](https://en.wikipedia.org/wiki/Factorial)
* [Арифметические операторы](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,73 @@
---
title: Falsy Bouncer
localeTitle: Фальшивый вышибала
---
![](//discourse-user-assets.s3.amazonaws.com/original/2X/5/55dedad40d9f3f662c70d1eac4effc00c7d26bd9.jpg)
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Удалите все значения [фальши](https://guide.freecodecamp.org/javascript/falsy-values/) из массива.
#### Связанные ссылки
* [Фальшивые ценности](https://guide.freecodecamp.org/javascript/falsy-values/)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Фальши - это то, что оценивается как ЛОЖЬ. В JavaScript всего шесть фальшивых значений: undefined, null, NaN, 0, "" (пустая строка) и false.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Мы должны убедиться, что у нас есть все значения фальши для сравнения, мы можем это знать, возможно, с функцией со всеми значениями фальши ...
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Затем нам нужно добавить `filter()` с функцией значений фальши ...
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода:
```
function bouncer(arr) {
return arr.filter(Boolean);
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/32)
### Код Объяснение:
Метод `Array.prototype.filter` ожидает функцию, которая возвращает `Boolean` значение, которое принимает один аргумент и возвращает `true` для значения [правды](http://forum.freecodecamp.com/t/javascript-truthy-value/15975) или `false` для значения [ложности](https://guide.freecodecamp.org/javascript/falsy-values/) . Следовательно, мы передаем встроенную `Boolean` функцию.
#### Связанные ссылки
* [логический](http://forum.freecodecamp.com/t/javascript-boolean/14311)
* [Truthy](http://forum.freecodecamp.com/t/javascript-truthy-value/15975)
* [Array.prototype.filter ()](http://forum.freecodecamp.com/t/javascript-array-prototype-filter/14289)
## ![:trophy:](https://forum.freecodecamp.com/images/emoji/emoji_one/trophy.png?v=3 ":трофей:") Кредиты:
Если вы нашли эту страницу полезной, вы можете поблагодарить, скопировав и вставив ее в основной чат:
**`Thanks @renelis @abhisekp @Rafase282 for your help with Algorithm: Falsy Bouncer`**
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,143 @@
---
title: Find the Longest Word in a String
localeTitle: Найти самое длинное слово в строке
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Вам нужно пройти каждое слово и выяснить, какой из них самый длинный, и не вернуть слово, но сколько персонажей у него есть.
#### Связанные ссылки
* [Длина строки JS](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/length)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Вы должны разделить строку на массив слов.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Вам нужно будет найти способ отслеживать глобальную максимальную длину.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Помните, как получить длину элементов массива? `Array[index].length` .
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
function findLongestWordLength(str) {
var words = str.split(' ');
var maxLength = 0;
for (var i = 0; i < words.length; i++) {
if (words[i].length > maxLength) {
maxLength = words[i].length;
}
}
return maxLength;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/5)
### Код Объяснение:
Возьмите строку и преобразуйте ее в массив слов. Объявите переменную, чтобы отслеживать максимальную длину и цикл от 0 до длины массива слов.
Затем проверьте самое длинное слово, сравнивая текущее слово с предыдущим и сохраняя новое длинное слово. В конце цикла просто верните числовое значение переменной maxLength.
#### Связанные ссылки
* [JS Array.length](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/length)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ": Подсолнечное:") Решение промежуточного кода:
**Использование `.reduce()`**
```
function findLongestWordLength(s) {
return s.split(' ')
.reduce(function(x, y) {
return Math.max(x, y.length)
}, 0);
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/6)
### Код Объяснение:
Для получения дополнительной информации об `reduce` [нажмите здесь.](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)
В случае, если вам интересно об этом `0` после функции обратного вызова, он используется, чтобы дать начальное значение `x` , так что `Math.max` будет знать, с чего начать.
#### Связанные ссылки
* [Сокращение JS](http://forum.freecodecamp.com/t/javascript-array-prototype-reduce/14299)
* [JS упростит работу](http://forum.freecodecamp.com/t/using-array-prototype-reduce-to-reduce-conceptual-boilerplate-for-problems-on-arrays/14687)
* [JS Math Max](http://forum.freecodecamp.com/t/javascript-math-max/14682.md)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода:
**Использование рекурсивности**
```
function findLongestWordLength(str) {
//split the string into individual words
//(important!!, you'll see why later)
str = str.split(" ");
//str only has 1 element left that is the longest element,
//return the length of that element
if(str.length == 1){
return str[0].length;
}
//if the first element's length is greater than the second element's (or equal)
//remove the second element and recursively call the function)
if(str[0].length >= str[1].length){
str.splice(1,1);
return findLongestWordLength(str.join(" "));
}
//if the second element's length is greater thant the first element's start
//call the function past the first element
if(str[0].length <= str[1].length){
// from the first element to the last element inclusive.
return findLongestWordLength(str.slice(1,str.length).join(" "));
}
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/7)
### Код Объяснение:
Первая строка разбивает строку на отдельные слова. Затем мы проверяем, имеет ли `str` только один элемент слева, то есть самый длинный элемент, и мы его возвращаем. Если длина первого элемента больше второго (или равного) второго элемента, мы удаляем второй элемент и рекурсивно вызываем функцию `findLongestWord` . Однако, если длина второго элемента больше, чем начало первого элемента, мы вызываем функцию через первый элемент.
#### Связанные ссылки
* [Функции JS](https://www.youtube.com/watch?v=R8SjM4DKK80)
* [Основы рекурсии](https://www.youtube.com/watch?v=k7-N8R0-KY4)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,49 @@
---
title: Finders Keepers
localeTitle: Finders Keepers
---
## Проблема Объяснение
Нам нужно вернуть элемент из массива, который передает функцию. И `function` и `array` передаются в нашу функцию `findElement(arr, func)` .
## Подсказка: 1
Просмотр массива может выполняться с помощью цикла `for` .
> _попытаться решить проблему сейчас_
## Подсказка: 2
`num` передается функции. Нам нужно будет установить его на элементы, которые мы хотим проверить с помощью функции.
> _попытаться решить проблему сейчас_
## Подсказка: 3
Не забывайте, что если ни один из чисел в массиве не прошел тест, он должен возвращаться `undefined` .
> _попытаться решить проблему сейчас_
## Основное решение
```javascript
function findElement(arr, func) {
let num = 0;
for(var i = 0; i < arr.length; i++) {
num = arr[i];
if (func(num)) {
return num;
}
}
return undefined;
}
```
## Обозначение кода
* Задача требует, чтобы мы просмотрели массив. Это делается с использованием цикла `for` .
* В функцию передается переменная `num` , поэтому мы устанавливаем ее для каждого индекса в нашем массиве.
* Предварительно определенная функция уже проверяет каждый номер для нас, поэтому, если это «истина», мы возвращаем это число.
* Если ни один из чисел в массиве не прошел тест функции, мы возвращаем undefined.

View File

@@ -0,0 +1,11 @@
---
title: Basic Algorithm Scripting
localeTitle: Основные алгоритмы Scripting
---
## Основные алгоритмы Scripting
Это заглушка. [Помогите нашему сообществу расширить его](https://github.com/freecodecamp/guides/tree/master/src/pages/mathematics/quadratic-equations/index.md) .
[Это руководство по быстрому стилю поможет вам принять ваш запрос на тягу](https://github.com/freecodecamp/guides/blob/master/README.md) .
#### Дополнительная информация:

View File

@@ -0,0 +1,102 @@
---
title: Mutations
localeTitle: Мутации
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
* Возвращает true, если строка в первом элементе массива содержит все буквы строки во втором элементе массива.
#### Связанные ссылки
* [String.indexOf ()](http://forum.freecodecamp.com/t/javascript-string-prototype-indexof/15936)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
* Если все в нижнем регистре, сравнивать будет легче.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
* С нашими струнами можно было бы работать легче, если бы они были массивами персонажей.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
* Петля может помочь. Используйте `indexOf()` чтобы проверить, является ли буква второго слова первой.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
**процедурный**
```
function mutation(arr) {
var test = arr[1].toLowerCase();
var target = arr[0].toLowerCase();
for (var i=0;i<test.length;i++) {
if (target.indexOf(test[i]) < 0)
return false;
}
return true;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/30)
### Код Объяснение:
Сначала мы делаем две строки в массиве строчными буквами. `test` проведет то, что мы ищем в `target` .
Затем мы прокручиваем наши тестовые символы, и если какой-либо из них не найден, мы `return false` .
Если се_ они будут найдены, цикл завершится, не возвращая ничего, и мы `return true` .
#### Связанные ссылки
* [String.toLowerCase ()](http://forum.freecodecamp.com/t/javascript-string-prototype-tolowercase/15948)
* [Для петель](http://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ": Подсолнечное:") Решение промежуточного кода:
**декларативный**
```
function mutation(arr) {
return arr[1].toLowerCase()
.split('')
.every(function(letter) {
return arr[0].toLowerCase()
.indexOf(letter) != -1;
});
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/31)
### Код Объяснение:
Возьмите вторую строку, в нижнем регистре и превратите ее в массив; затем убедитесь, что аждая_ из его _букв_ является частью нижней строки с нижним регистром.
`Every` будет в основном давать вам письмо по буквам для сравнения, которое мы используем с помощью `indexOf` в первой строке. `indexOf` даст вам -1, если текущая `letter` отсутствует. Мы проверяем, что это не так, потому что, если это произойдет даже один раз, `every` будет ложным.
#### Связанные ссылки
* [Array.split ()](http://forum.freecodecamp.com/t/javascript-string-prototype-split/15944)
* [Array.every ()](http://forum.freecodecamp.com/t/javascript-array-prototype-every/14287)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,119 @@
---
title: Repeat a String Repeat a String
localeTitle: Повторить строку Повторить строку
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Программа очень проста, мы должны взять переменную и вернуть эту переменную, повторяющуюся определенное количество раз. Не нужно добавлять пространство или что-то еще, просто повторяйте его в одну строку.
#### Связанные ссылки
* [Глобальный объект String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Вы не можете редактировать строки, вам нужно будет создать переменную для хранения новой строки.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Создайте цикл, чтобы повторять код столько раз, сколько необходимо.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Создайте переменную, которая сохранит текущее значение и добавит к нему слово.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
function repeatStringNumTimes(str, num) {
var accumulatedStr = '';
while (num > 0) {
accumulatedStr += str;
num--;
}
return accumulatedStr;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/19)
### Код Объяснение:
* Создайте пустую строковую переменную, чтобы сохранить повторяющееся слово.
* Используйте цикл while или цикл для повторения кода столько раз, сколько необходимо в соответствии с `num`
* Затем нам просто нужно добавить строку к переменной, созданной на первом шаге, и увеличить или уменьшить `num` зависимости от того, как вы устанавливаете цикл.
* В конце цикла верните переменную для повторного слова.
#### Связанные ссылки
* JS while Loop
* [JS для пояснений](https://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ": Подсолнечное:") Решение промежуточного кода:
```
function repeatStringNumTimes(str, num) {
if(num < 0)
return "";
if(num === 1)
return str;
else
return str + repeatStringNumTimes(str, num - 1);
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/21)
### Код Объяснение:
* Это решение использует рекурсию.
* Мы проверяем, является ли `num` отрицательным и возвращает пустую строку, если true.
* Затем мы проверяем, равен ли он 1, и в этом случае мы возвращаем строку.
* Если нет, мы добавляем строку к вызову нашей функции с уменьшением `num` на 1, что добавит еще одну `str` и другую .. до тех пор, пока `num` равно 1. И верните весь этот процесс.
#### Связанные ссылки
* [Функции - Рекурсия](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Recursion)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода:
```
function repeatStringNumTimes(str, num) {
return num > 0 ? str.repeat(num) : '';
}
repeatStringNumTimes("abc", 3);
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/85)
### Код Объяснение:
* Это решение принимает декларативный подход.
* Это похоже на третье решение, за исключением того, что использует форму тернарного оператора оператора `if` .
#### Связанные ссылки
* [JS Ternary](https://forum.freecodecamp.com/t/javascript-ternary-operator/15973)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Увидеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](https://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](https://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,160 @@
---
title: Return Largest Numbers in Arrays
localeTitle: Возвращает наибольшие числа в массивах
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Вы получите массив, содержащий вспомогательные массивы чисел, и вам нужно вернуть массив с наибольшим числом из каждого из вспомогательных массивов.
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Вам нужно будет отслеживать массив с ответом и наибольшим количеством каждого подматрица.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Вы можете работать с многомерными массивами с помощью `Array[Index][SubIndex]`
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Обратите особое внимание на время хранения переменных при работе с циклами
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решения впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
**(Процедурный подход)**
```
function largestOfFour(arr) {
var results = [];
for (var n = 0; n < arr.length; n++) {
var largestNumber = arr[n][0];
for (var sb = 1; sb < arr[n].length; sb++) {
if (arr[n][sb] > largestNumber) {
largestNumber = arr[n][sb];
}
}
results[n] = largestNumber;
}
return results;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/734)
### Код Объяснение:
* Создайте переменную для хранения _результатов_ в виде массива.
* Создайте внешний цикл для итерации по внешнему массиву.
* Создайте вторую переменную, чтобы удерживать наибольшее число и инициализировать ее первым номером. Это должно быть вне внутреннего цикла, поэтому он не будет переназначен, пока мы не найдем большее число.
* Создайте внутренний цикл для работы с суб-массивами.
* Убедитесь, что элемент вспомогательного массива больше, чем текущий наибольший номер. Если да, то обновите номер в переменной.
* После внутреннего цикла сохраните наибольшее число в соответствующей позиции внутри массива `results` .
* И, наконец, верните указанный массив.
#### Связанные ссылки
* [Для петель](http://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ": Подсолнечное:") Решение промежуточного кода:
**(Декларативный подход)**
```
function largestOfFour(arr) {
return arr.map(function(group){
return group.reduce(function(prev, current) {
return (current > prev) ? current : prev;
});
});
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/733)
### Код Объяснение:
* мы сопоставляем все элементы в основном массиве с новым массивом с использованием `Array.prototype.map()` и возвращаем этот массив в качестве конечного результата
* внутри каждого внутреннего массива мы сводим его содержимое до одного значения, используя `Array.prototype.reduce()`
* функция обратного вызова, переданная методу уменьшения, принимает предыдущее значение и текущее значение и сравнивает два значения
* если текущее значение выше предыдущего значения, мы устанавливаем его как новое предыдущее значение для сравнения со следующим элементом массива или возвращаем его на обратный вызов метода карты, если это последний элемент
#### Связанные ссылки
* [Array.prototype.map ()](http://forum.freecodecamp.com/t/javascript-array-prototype-map/14294)
* [Array.prototype.reduce ()](http://forum.freecodecamp.com/t/javascript-array-prototype-reduce/14299)
* [Тернарные операторы](http://forum.freecodecamp.com/t/javascript-ternary-operator/15973)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода:
**(Декларативный подход)**
```
function largestOfFour(arr) {
return arr.map(Function.apply.bind(Math.max, null));
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/17)
### Код Объяснение:
TL; DR: Мы создаем специальную функцию обратного вызова (используя метод `Function.bind` ), который работает точно так же, как и `Math.max` но также обладает способностью `Function.prototype.apply` брать массивы в качестве аргументов ![:smiley:](https://forum.freecodecamp.com/images/emoji/emoji_one/smiley.png?v=3 ": Смайлик:")
* Начнем с отображения элементов внутри основного массива. Значение каждого из внутренних массивов.
* Теперь нужна функция обратного вызова, чтобы найти максимальный размер каждого внутреннего массива, предоставленного картой.
Поэтому мы хотим создать функцию, которая выполняет работу `Math.max` и принимает ввод как массив (который по умолчанию не используется).
Другими словами, было бы очень приятно и просто, если бы это сработало само по себе:
`Math.max([9, 43, 20, 6]); // Resulting in 43`
Увы, этого нет.
* Чтобы выполнить работу с принятием аргументов в форме массива, существует этот метод `Function.prototype.apply` , но он немного усложняет ситуацию, _вызывая_ функцию онтекста_ .
т.е. `Math.max.apply(null, [9, 43, 20, 6]);` будет ссылаться на что-то вроде метода `Max.max` . То, что мы ищем ... почти.
Здесь мы передаем `null` как онтекст_ метода `Function.prototype.apply` как `Math.max` не нуждается в каком-либо контексте.
* Поскольку `arr.map` ожидает функцию обратного вызова, а не только выражение, мы создаем функцию из предыдущего выражения с помощью метода `Function.bind` .
* Поскольку `Function.prototype.apply` является статическим етодом_ одного и того же _объекта_ `Function` , мы можем вызвать `Function.prototype.bind` на `Function.prototype.apply` то есть `Function.prototype.apply.bind` .
* Теперь мы передаем онтекст_ для вызова `Function.prototype.apply.bind` (в этом случае мы хотим `Math.max` чтобы мы могли получить его функциональность).
* Поскольку встроенный метод `Function.prototype.apply` также потребует контекста, поскольку это первый аргумент, нам нужно передать ему фиктивный онтекст_ .
* Итак, мы передаем `null` как второй параметр в `Function.prototype.apply.bind` который дает онтекст_ методу `Math.max` .
* Поскольку `Math.max` не зависит от какого-либо онтекста_ , следовательно, он игнорирует фиктивный онтекст,_ заданный вызовом метода `Function.prototype.apply` .
* Таким образом, наш `Function.prototype.apply.bind(Math.max, null)` создает новую функцию, принимающую значения `arr.map` т.е. внутренние массивы.
#### Связанные ссылки
* [Math.max](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/max)
* [Function.prototype.apply на DevDocs](http://devdocs.io/#q=js+Function+apply)
* [Function.bind в DevDocs](http://devdocs.io/#q=js+Function+bind)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,68 @@
---
title: Reverse a String
localeTitle: Обратить строку
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Нам нужно взять строку и отменить ее, поэтому, если она изначально читает «привет», теперь она будет читать «olleh». Нам нужно разбить строку, и поэтому мы будем работать с массивами.
#### Связанные ссылки
* [str.split ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split)
* [arr.reverse ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)
* [arr.join ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/join)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Начните с разбиения строки на символы.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Посмотрите встроенную функцию, чтобы изменить строку.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Не забудьте снова присоединиться к персонажам после их отмены.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
function reverseString(str) {
return str.split('').reverse().join('');
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU)
### Код Объяснение:
* Наша цель - взять вход, `str` и вернуть его в обратном порядке. Нашим первым шагом является разделение строки на символы с помощью `split('')` . Обратите внимание, что мы не оставляем ничего между одинарными кавычками, это говорит функции разбить строку на каждый символ.
* Использование функции `split()` превратит нашу строку в массив символов, помните об этом, когда мы продвигаемся вперед.
* Далее мы ЕПЬ_ `reverse()` функции, которая принимает наш массив символов и переворачивает их.
* Наконец, мы `join('')` епочку_ `join('')` чтобы объединить наши символы в строку. Еще раз обратите внимание, что мы не оставили пробелов в аргументе для объединения, это гарантирует, что массив символов объединяется вместе каждым символом.
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,77 @@
---
title: Slice and Splice
localeTitle: Нарезка и сращивание
---
## Нарезка и сращивание
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Нам нужно скопировать каждый элемент из первого массива во второй массив, начиная с индекса n. Мы также должны убедиться, что исходные массивы не мутированы. То есть мы не можем внести никаких изменений в исходные массивы.
#### Связанные ссылки
* [str.slice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice)
* [str.splice ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Создайте копию второго массива внутри функции. Это гарантирует, что исходный массив не будет мутирован. Это можно сделать, используя операцию среза во втором массиве и присвоить его переменной.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Прокрутите все элементы в первом массиве. Для каждого элемента в первом массиве сплайсируйте его в скопированный массив в указателе, указанном в качестве аргумента.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Увеличьте индекс после выполнения сращивания.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](https://discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
function frankenSplice(arr1, arr2, n) {
// It's alive. It's alive!
let localArray = arr2.slice();
for (let i = 0; i < arr1.length; i++) {
localArray.splice(n, 0, arr1[i]);
n++;
}
return localArray;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU)
### Код Объяснение:
* Наша цель - взять все элементы из `arr1` и вставить их в `arr2` начиная с позиции индекса `n` . В то же время мы должны гарантировать, что ни `arr` ни `arr2` не были мутированы.
* Используя функцию `slice()` мы можем создать точную реплика `arr2` и присвоить результат операции переменной `localArray` .
* Теперь, когда у нас есть массив, с которым мы можем мутировать, мы можем перебирать каждый элемент в первом массиве. Для каждого элемента в первом массиве мы можем использовать функцию `splice()` чтобы вставить элемент в индекс `n` `localArray` .
* Мы увеличиваем индекс `n` на единицу. Это гарантирует, что каждый элемент из `arr1` будет вставлен в `localArray` в правильное положение индекса.
* Наконец, мы возвращаем `localArray` и `localArray` функцию.
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Увидеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,144 @@
---
title: Title Case a Sentence
localeTitle: Название Случайное предложение
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Мы должны вернуть предложение с титульным листом. Это означает, что первая буква всегда будет в верхнем регистре, а остальные будут в нижнем регистре.
#### Связанные ссылки
* [Глобальный объект String](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String)
* [JS String Prototype ToLowerCase](http://forum.freecodecamp.com/t/javascript-string-prototype-tolowercase/15948)
* [JS String Prototype ToUpperCase](http://forum.freecodecamp.com/t/javascript-string-prototype-touppercase/15950)
* [Замена прототипа JS](http://forum.freecodecamp.com/t/javascript-string-prototype-replace/15942)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
* Вы должны начать с разделения строки на массив слов.
* Разделите предложение.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
* Вы должны сделать слово в нижнем регистре, прежде чем делать первую букву в верхнем регистре.
* Используйте метод замены для каждого слова, чтобы загладить первую букву каждого слова.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
* Вам нужно будет создать новую строку с фрагментами предыдущего и в конце снова объединить все в одну строку.
* В методе замены дайте первый аргумент как позицию первой буквы, используя charAt. Для второго аргумента напишите функцию, чтобы вернуть заглавную букву в качестве замены.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
String.prototype.replaceAt = function(index, character) {
return this.substr(0, index) + character + this.substr(index+character.length);
};
function titleCase(str) {
var newTitle = str.split(' ');
var updatedTitle = [];
for (var st in newTitle) {
updatedTitle[st] = newTitle[st].toLowerCase().replaceAt(0, newTitle[st].charAt(0).toUpperCase());
}
return updatedTitle.join(' ');
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/8)
### Код Объяснение:
Мы модифицируем функцию `replaceAt` с использованием прототипа, чтобы облегчить использование программы.
Разделите строку пробелами и создайте переменную для отслеживания обновленного заголовка. Затем мы используем цикл для поворота первого символа слова в верхний регистр, а остальные - в нижний регистр. создавая конкатенированную строку, состоящую из всего слова в нижнем регистре, причем первый символ заменяется на верхний.
#### Связанные ссылки
* [JS для пояснений](http://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
* [Разделение прототипа JS String](http://forum.freecodecamp.com/t/javascript-string-prototype-split/15944)
* [JS String Prototype Substr](http://forum.freecodecamp.com/t/javascript-string-prototype-substr/15945)
* [Присоединиться](http://forum.freecodecamp.com/t/javascript-array-prototype-join/14292)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ": Подсолнечное:") Решение промежуточного кода:
```
function titleCase(str) {
var convertToArray = str.toLowerCase().split(" ");
var result = convertToArray.map(function(val){
return val.replace(val.charAt(0), val.charAt(0).toUpperCase());
});
return result.join(" ");
}
titleCase("I'm a little tea pot");
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/9)
### Код Объяснение:
Мы делаем всю строчную строчную строчку, а затем преобразуем ее в массив. Затем мы используем функцию карты, чтобы заменить символ нижнего регистра верхним регистром. Наконец, мы возвращаем строку, используя метод `join` .
#### Связанные ссылки
* [Карта прототипа JS Array](http://forum.freecodecamp.com/t/javascript-array-prototype-map/14294)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода:
```
function titleCase(str) {
return str.toLowerCase().replace(/(^|\s)\S/g, (L) => L.toUpperCase());
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/14)
### Код Объяснение:
Решение работает, сначала уменьшая все символы в строке, а затем только верхний индекс первого символа каждого слова.
* `str.toLowerCase()` цепочку с помощью `str.toLowerCase()` .
* Замените каждое слово «первый символ» на верхний регистр, используя `.replace` .
* Поиск символа в начале каждого слова, т.е. сопоставление любого символа, следующего за `space` или совпадающего с первым символом всей строки, с использованием следующего шаблона.
* Объяснение Regex:
* Найти все символы без пробелов `(\S` )
* В начале строки `(^)`
* Или после любого символа пробела `(\s)`
* Модификатор `g` ищет другой такой шаблон слова во всей строке и заменяет их.
* Это решение работает с национальными символами и акцентированными буквами, как показано на следующих примерах
`international characters:` 'бабушка курит трубку' // -> 'Бабушка Курит Трубку'
`accented characters:` 'località àtilacol' // -> 'Località Àtilacol'
#### Связанные ссылки
* [Ресурсы JS Regex](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Увидеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,101 @@
---
title: Truncate a String
localeTitle: Усекать строку
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Нам нужно уменьшить длину строки или **усечь** ее, если она длиннее заданной максимальной длины и добавить `...` до конца. Если это не так долго, мы сохраняем это как есть.
#### Связанные ссылки
* [String.prototype.slice ()](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/JS-String-Prototype-Slice)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Строки неизменяемы в JavaScript, поэтому нам понадобится новая переменная для хранения усеченной строки.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Вам нужно будет использовать метод slice () и указать, с чего начать и где остановиться.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Не забывайте, что когда мы усекаем слово, мы также должны учитывать длину, добавленную `...`
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
function truncateString(str, num) {
// Clear out that junk in your trunk
if (str.length > num && num > 3) {
return str.slice(0, (num - 3)) + '...';
} else if (str.length > num && num <= 3) {
return str.slice(0, num) + '...';
} else {
return str;
}
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/55)
### Код Объяснение:
* Сначала мы начинаем с простого утверждения `if` чтобы определить один из трех результатов ...
* Если длина строки больше, чем `num` мы хотим усечь, а наша точка усечения не менее трех символов или больше в строке, мы возвращаем срез нашей строки, начиная с символа 0, и заканчивая `num - 3` . Затем мы добавляем наш `'...'` в конец строки.
* Однако, если наша длина строки больше, чем `num` но `num` находится в пределах первых трех символов, нам не нужно считать наши точки символами. Поэтому мы возвращаем ту же строку, что и выше, с одной разницей: конечная точка нашего среза теперь просто `num` .
* Наконец, если ни одна из приведенных выше ситуаций не верна, это означает, что наша длина строки меньше, чем наша усечка `num` . Поэтому мы можем просто вернуть строку.
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода:
```
function truncateString(str, num) {
if (str.length <= num) {
return str;
} else {
return str.slice(0, num > 3 ? num - 3 : num) + '...';
}
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/54)
### Код Объяснение:
* Сначала нам нужен оператор if, чтобы проверить, прошла ли длина полной строки, поскольку первый аргумент уже вписывается в ограничение размера, переданное в качестве второго аргумента. Если это так, мы можем просто вернуть строку, которая была передана.
if (str.length <= num) return str;
* Если наш оператор `if` выше не работает, мы переходим к `else` , где мы собираемся вернуть «срез» строки. Метод slice извлекает секцию строки и возвращает новую строку. Здесь мы передаем 0 как отправную точку для нашего среза. Чтобы определить конечную точку, мы используем тернарный оператор: `num > 3 ? num - 3 : num` . В нашем тройном, если `num` больше 3, мы должны учитывать три точки по нашей общей длине, и, таким образом, мы заканчиваем наш срез на `num-3` . Если num меньше или равно 3, наш срез получает конечную переменную только `num` . Наконец, `'...'` добавляется к концу нашей новой строки и возвращается.
} else { return str.slice (0, num> 3? num - 3: num) + '...'; }
* **ПРИМЕЧАНИЕ.** Чтобы понять приведенный выше код, вам нужно понять, как работает Тернарный оператор. Тернарный оператор часто используется как ярлык для оператора `if` и следует за этим форматом: `condition ? expr1 : expr2` . Если `condition` принимает значение true, оператор возвращает значение `expr1` . В противном случае он возвращает значение `expr2` .
#### Связанные ссылки
* [Условный (тройной) оператор](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator)
* [String.prototype.slice ()](https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/JS-String-Prototype-Slice)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Увидеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,205 @@
---
title: Where Do I Belong
localeTitle: Где я принадлежу
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
Это может быть сложной проблемой для понимания. Вам нужно найти, где в массиве число должно быть вставлено по порядку и вернуть индекс, куда он должен идти.
#### Связанные ссылки
* [JS Array Сортировать](http://forum.freecodecamp.com/t/javascript-array-prototype-sort/14306)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Первое, что нужно сделать, это отсортировать массив от более низкого до большего, просто чтобы сделать код проще. Здесь происходит сортировка, ей нужна функция обратного вызова, поэтому вам нужно ее создать.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
После сортировки массива, просто проверьте первое число, которое больше, и верните индекс.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Если для этого номера нет индекса, вам также придется иметь дело с этим делом.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
for (var a = 0; a < arr.length; a++) {
if (arr[a] >= num)
return a;
}
return arr.length;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/36)
## Код Объяснение:
* Сначала я сортирую массив, используя `.sort(callbackFuntion)` чтобы отсортировать его по наименьшему и наивысшему, слева направо.
* Затем я использую цикл for для сравнения элементов в массиве, начиная с самого маленького. Когда элемент массива больше числа, с которым мы сравниваем, мы возвращаем индекс как целое число.
#### Связанные ссылки
* [ParseInt ()](http://forum.freecodecamp.com/t/javascript-parseint/14686)
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
function getIndexToIns(arr, num) {
// Find my place in this sorted array.
var times = arr.length; // runs the for loop once for each thing in the array
var count = 0;
for (var i=0;i<times;i++){
if(num>arr[i]){count++;} } // counts how many array numbers are smaller than num
return count; // the above equals num's position in a sorted array
}
getIndexToIns([40, 60], 50);
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/2547)
## Код Объяснение:
* Я не сортирую массив arr arr
* Я запускаю подсчет для цикла, когда числовой ввод больше, чем номер входа arr.
* Это число эквивалентно тому, что позиция num будет в отсортированном массиве.
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
by [@HarinaPana](/u/harinapana)
```
function getIndexToIns(arr, num) {
arr.sort(function(a, b) {
return a - b;
});
var i = 0;
while (num > arr[i]) {
i++;
}
return i;
}
getIndexToIns([40, 60], 50);
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/4135)
## Код Объяснение:
* Сортировка существующего массива.
* Итерации через массив, проверяя, является ли _num_ больше.
* Цикл будет остановлен, когда _число_ не больше _i_ и вернет последний элемент.
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ": Подсолнечное:") Решение промежуточного кода:
by [@faustodc](/u/faustodc)
```
function getIndexToIns(arr, num) {
arr.push(num);
arr.sort(function(a, b){return ab});
return arr.indexOf(num);
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/EB10/1)
## Код Объяснение:
* Сначала мы добавляем число `num` в массив, используя `push()` который добавляет его как последний элемент массива.
* Затем мы используем функцию `sort()` с функцией `function(a, b){return ab}` обратного вызова `function(a, b){return ab}` для сортировки чисел в порядке возрастания.
* Наконец, мы возвращаем позицию или индекс `num` в массиве с помощью функции `indexOf()` .
#### Связанные ссылки
* [От себя()](http://forum.freecodecamp.com/t/javascript-array-prototype-push/14298)
* [Сортировать()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)
* [индекс()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ": Подсолнечное:") Решение промежуточного кода:
**Использование `.findIndex()`**
```
function getIndexToIns(arr, num) {
// sort and find right index
var index = arr.sort((curr, next) => curr > next)
.findIndex((currNum)=> num <= currNum);
// Returns proper answer
return index === -1 ? arr.length : index;
}
getIndexToIns([40, 60], 500);
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/CLjU/63)
## Код Объяснение:
* Сначала отсортируйте массив в порядке возрастания, в настоящее время это делается с использованием функций массива для минимального размера.
* После сортировки массива мы непосредственно применяем `.findIndex()` где мы будем сравнивать каждый элемент в массиве, пока не найдем, где `num <= currNum` означает, где число, которое мы хотим вставить, меньше или равно текущему числу число в итерации.
* Затем мы используем тройные операции, чтобы проверить, получил ли мы возвращенный индекс или `-1` . Мы получаем только `-1` когда индекс не был найден, когда мы получаем false для всех элементов int he array, и для такого случая это означало бы, что `num` должен быть вставлен в конце списка, поэтому мы используем `arr.length` ,
#### Связанные ссылки
* [Array.findIndex ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex)
* [Функции стрелки](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
* [Тернарный оператор](http://forum.freecodecamp.com/t/javascript-ternary-operator/15973)
## ![:rotating_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/rotating_light.png?v=3 ": Rotating_light:") Расширенное решение для кода:
by [@nivrith](/u/nivrith)
```
function getIndexToIns(arr, num) {
return arr.concat(num).sort((a,b) => ab).indexOf(num);
}
getIndexToIns([1,3,4],2);
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ": Ракета:") [Код запуска](https://repl.it/IUJE/0)
## Код Объяснение:
* Мы используем метод-цепочку для вызова одного метода за другим для решения проблемы в одной строке. Сначала мы объединяем `arr` и `num` , вызывая метод arr.concat (num)
* Затем мы используем **функцию** `sort()` с **функцией стрелки** обратного вызова `(a, b) => return ab` для сортировки чисел в порядке возрастания
* Наконец, мы возвращаем позицию или индекс `num` в массиве с помощью `indexOf()`
#### Связанные ссылки
* [Цепочка метода в JavaScript](https://schier.co/blog/2013/11/14/method-chaining-in-javascript.html)
* [CONCAT ()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/concat?v=example)
* [Функции стрелок](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions)
## ![:clipboard:](https://forum.freecodecamp.com/images/emoji/emoji_one/clipboard.png?v=3 ": Буфер обмена:") ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:
* ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **НЕ** добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это **_похоже, но лучше_** , попробуйте объединить (или заменить) существующее подобное решение.
* Добавьте объяснение своего решения.
* Классифицируйте решение в одной из следующих категорий - **Basic** , **Intermediate** и **Advanced** . ![:traffic_light:](https://forum.freecodecamp.com/images/emoji/emoji_one/traffic_light.png?v=3 ":светофор:")
* Пожалуйста, добавьте свое имя пользователя, только если вы добавили **соответствующее основное содержимое** . ( ![:warning:](https://forum.freecodecamp.com/images/emoji/emoji_one/warning.png?v=3 ":предупреждение:") **_НЕ_** _удаляйте существующие имена пользователей_ )
> Видеть ![:point_right:](https://forum.freecodecamp.com/images/emoji/emoji_one/point_right.png?v=3 ": Point_right:") [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для [**`Wiki Challenge Solution Template`**](http://forum.freecodecamp.com/t/algorithm-article-template/14272) для справки.

View File

@@ -0,0 +1,69 @@
---
title: Iterate Through the Keys of an Object with a for...in Statement
localeTitle:  Итерация через ключи объекта с помощью for for ... in Statement
---
## Итерация через ключи объекта с помощью for for ... in Statement
Метод:
* Примечание. `dot-notation` вызовет ошибки в этой проблеме.
* `[square-bracket]` notation должна использоваться для вызова имени свойства переменной.
* Следующий код не будет работать.
### Пример 1:
```javascript
for (let user in obj) {
if(obj.user.online === true) {
//code
}
}
```
* В примере 2 показано, как использовать нотацию с `[square-bracket]` код будет выполнен.
### Пример 2:
```javascript
for (let user in obj) {
if(obj[user]online === true) {
//code
}
}
```
### Решение:
```javascript
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) {
// change code below this line
let result = 0;
for (let user in obj) {
if(obj[user].online === true) {
result++;
}
}
return result;
// change code above this line
}
console.log(countOnline(users));
```

View File

@@ -0,0 +1,14 @@
---
title: Access an Array's Contents Using Bracket Notation
localeTitle: Доступ к содержимому массива с использованием скобок
---
## Доступ к содержимому массива с использованием скобок
* Помните, что индекс массивов начинается с 0, поэтому положение b будет расположено в `myArray[1]` .
## Решение
```javascript
myArray[1] = "anything we want";
```

View File

@@ -0,0 +1,45 @@
---
title: Access Property Names with Bracket Notation
localeTitle: Доступ к именам объектов с обозначением скобок
---
## Доступ к именам объектов с обозначением скобок
Метод:
* Используя нотацию в виде скобок, просто напишите оператор return в функции `checkInventory()` .
* Следующий блок кода демонстрирует требуемый синтаксис.
## Пример:
```javascript
let juice = {
apple: 1.15,
orange: 1.45
};
function checkInventory(scannedItem) {
return juice[scannedItem];
}
```
## Решение:
```javascript
let foods = {
apples: 25,
oranges: 32,
plums: 28,
bananas: 13,
grapes: 35,
strawberries: 27
};
// do not change code above this line
function checkInventory(scannedItem) {
// change code below this line
return foods[scannedItem];
}
// change code below this line to test different cases:
console.log(checkInventory("apples"));
```

View File

@@ -0,0 +1,23 @@
---
title: Add Items to an Array with push() and unshift()
localeTitle: Добавление элементов в массив с помощью push () и unshift ()
---
## Добавление элементов в массив с помощью push () и unshift ()
* Как и в приведенном примере, используйте метод `.unshift()` в массиве, чтобы добавить элементы в начало массива и использовать метод `.push()` для добавления элементов в конец массива.
## Решение:
```javascript
function mixedNumbers(arr) {
// change code below this line
arr.unshift('I',2,'three');
arr.push(7,'VIII', 9);
// change code above this line
return arr;
}
// do not change code below this line
console.log(mixedNumbers(['IV', 5, 'six']));
```

View File

@@ -0,0 +1,35 @@
---
title: Add Items Using splice()
localeTitle: Добавление элементов с помощью splice ()
---
## Добавление элементов с помощью splice ()
* Использование функции сращивания (), вы должны удалить первые 2 элемента из массива `arr` и заменить их `DarkSalmon` и `BlanchedAlmond` .
* Помните, что функция сращивания может принимать до трех параметров.
## Пример:
```javascript
arr.splice(0, 1, "Two");
/* The first two paramemters are the same as they were in the previous challenge.
`0` will start the `splice()` function off at index 0.
The second parameter `1` will remove only 1 variable from the array.
The final variable "Two" will replace the variable in arr[0].
Note: The final parameter can take more than 1 arguement.
*/
```
## Решение:
```javascript
function htmlColorNames(arr) {
// change code below this line
arr.splice(0, 2, "DarkSalmon", "BlanchedAlmond");
// change code above this line
return arr;
}
// do not change code below this line
console.log(htmlColorNames(['DarkGoldenRod', 'WhiteSmoke', 'LavenderBlush', 'PaleTurqoise', 'FireBrick']));
```

View File

@@ -0,0 +1,30 @@
---
title: Add Key-Value Pairs to JavaScript Objects
localeTitle: Добавление пар ключей к объектам JavaScript
---
## Добавление пар ключей к объектам JavaScript
* Объект питания уже объявлен. Все, что осталось сделать, это добавить три новых `key-values` .
```javascript
OBJECT[{KEY}] = {VALUE}
```
* Вышеприведенный код создаст `key-value` ney внутри объекта.
## Решение
```javascript
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
console.log(foods);
```

View File

@@ -0,0 +1,33 @@
---
title: Check For The Presence of an Element With indexOf()
localeTitle: Проверка наличия элемента с помощью indexOf ()
---
## Проверка наличия элемента с помощью indexOf ()
* Простой `if-statement` может использоваться для проверки того, является ли значение, возвращаемое `indexOf()` меньше 0.
* Как только значение будет обнаружено, вы можете вернуть `true` или `false` .
* `Solution-1` демонстрирует, как простой `if-statement` может вернуть правильный результат.
## Решение-1:
```javascript
function quickCheck(arr, elem) {
if(arr.indexOf(elem)>=0) {
return true;
}
return false;
}
console.log(quickCheck(['squash', 'onions', 'shallots'], 'mushrooms'));
```
* `Solution-2` демонстрирует, как проблему можно решить, используя `? : (conditional)` оператор.
## Решение-2:
```javascript
function quickCheck(arr, elem) {
return arr.indexOf(elem) >= 0 ? true : false;
}
console.log(quickCheck(['squash', 'onions', 'shallots'], 'mushrooms'));
```

View File

@@ -0,0 +1,55 @@
---
title: Check if an Object has a Property
localeTitle: Проверьте, имеет ли объект свойство
---
## Проверьте, имеет ли объект свойство
Метод:
* Самый простой способ завершить эту задачу - создать « `ìf-statement` для проверки, чтобы убедиться, что объект не содержит всех пользователей, а затем вернуть истинную или ложную инструкцию. Первое решение делает именно это.
* Второе решение работает точно так же, только в нем используется одна строка кода - `Conditional(ternary)-Operator` .
[developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator) предоставляет более глубокий анализ тернарного оператора.
### Решение-1:
```javascript
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) {
// change code below this line
if(users.hasOwnProperty('Alan','Jeff','Sarah','Ryan')) {
return true;
}
return false;
// change code above this line
}
console.log(isEveryoneHere(users));
```
### Решение-2:
```javascript
function isEveryoneHere(obj) {
return (users.hasOwnProperty('Alan','Jeff','Sarah','Ryan')) ? true : false;
}
```

View File

@@ -0,0 +1,21 @@
---
title: Combine Arrays with the Spread Operator
localeTitle: Объединить массивы с оператором распространения
---
## Объединить массивы с оператором распространения
* Решение в точности соответствует приведенному примеру. Просто вставьте массив `fragment[]` массив `sentence[]` в нужном индексе.
## Решение:
```javascript
function spreadOut() {
let fragment = ['to', 'code'];
let sentence = ["learning", ...fragment, "is", "fun"]; // change this line
return sentence;
}
// do not change code below this line
console.log(spreadOut());
```

View File

@@ -0,0 +1,20 @@
---
title: Copy an Array with the Spread Operator
localeTitle: Скопируйте массив с помощью оператора распространения
---
## Скопируйте массив с помощью оператора распространения
* Последний намек в примере говорит вам использовать недавно выученный метод.
* Оператор распространения копирует все элементы в новый пустой объект.
\`\` \`Javascript while (num> = 1) { newArr = \[... arr\] num--; }
```
- The code above will copy all of the elements into `newArr` but will also reinitialise `newArr` with every new iteration of the while loop.
- A new variable should first be initialised using the spread operator - `let obj = [...arr];` - then this variable should be added to the `newArr` for every iteration of the while loop.
## Solution:
```
Javascript function copyMachine (arr, num) { пусть newArr = \[\]; while (num> = 1) { // изменить код ниже этой строки newArr.push (\[... обр\]); // изменить код над этой строкой num--; } return newArr; }
// измените код здесь, чтобы протестировать разные случаи: console.log (copyMachine (\[true, false, true\], 2)); \`\` \`

View File

@@ -0,0 +1,30 @@
---
title: Copy Array Items Using slice()
localeTitle: Копирование элементов массива Использование среза ()
---
## Копирование элементов массива Использование среза ()
* функция `slice()` должна использоваться для возврата массива, состоящего только из `warm` и `sunny` .
* Поэтому два параметра должны быть переданы функции `slice()` . Первым параметром должен быть индекс, на который вы хотите начать подстроку. Второй параметр должен быть индексом, по которому заканчивается подстрока.
* Примечание. Второй параметр завершит подстроку с точным индексом.
## Пример:
```javascript
return arr.slice(1,4);
/* This will return a substring consisting of indexs [1,2,3]
Note: arr[4] is NOT included.
```
## Решение:
```javascript
function forecast(arr) {
// change code below this line
return arr.slice(2,4);
}
// do not change code below this line
console.log(forecast(['cold', 'rainy', 'warm', 'sunny', 'cool', 'thunderstorms']));
```

View File

@@ -0,0 +1,28 @@
---
title: Create complex multi-dimensional arrays
localeTitle: Создание сложных многомерных массивов
---
## Создание сложных многомерных массивов
* Первая строка - `deep` - должна быть вставлена ​​на три уровня. Это означает, что в пределах ровных множеств `[square-brackets]` .
```javascript
let threeLevelArray = ["first level", ["Two levels deep", ["Three levels deep"]]];
```
* Используя эту логику вставки строки `deep` , `deeper` и самого `deepest` в матрице три уровней, четыре уровня глубокой и пять уровней глубоко соответственно.
## Решение:
```javascript
let myNestedArray = [
// change code below this line
['unshift', false, 1, 2, 3, 'complex', 'nested'],
['loop', 'shift', 6, 7, 1000, 'method'],
['concat', false, true, 'spread', 'array',["deep"]],
['mutate', 1327.98, 'splice', 'slice', 'push', [["deeper"]]],
['iterate', 1.3849, 7, '8.4876', 'arbitrary', 'depth', [[["deepest"]]] ]
// change code above this line
];
```

View File

@@ -0,0 +1,42 @@
---
title: Generate an Array of All Object Keys with Object.keys()
localeTitle: Генерировать массив всех ключей объекта с помощью Object.keys ()
---
## Генерировать массив всех ключей объекта с помощью Object.keys ()
### Метод:
* Чтобы вернуть массив пользователей, метод `Object.keys()` должен принять аргумент.
* Эта задача может быть решена с помощью оператора прямой строки.
### Решение:
```javascript
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) {
// change code below this line
return Object.keys(obj);
// change code above this line
}
console.log(getArrayOfUsers(users));
```

View File

@@ -0,0 +1,11 @@
---
title: Basic Data Structures
localeTitle: Основные структуры данных
---
## Основные структуры данных
Это заглушка. [Помогите нашему сообществу расширить его](https://github.com/freecodecamp/guides/tree/master/src/pages/mathematics/quadratic-equations/index.md) .
[Это руководство по быстрому стилю поможет вам принять ваш запрос на тягу](https://github.com/freecodecamp/guides/blob/master/README.md) .
#### Дополнительная информация:

View File

@@ -0,0 +1,54 @@
---
title: Iterate Through All an Array's Items Using For Loops
localeTitle: Итерация через все элементы массива с использованием циклов
---
## Итерация через все элементы массива с использованием циклов
## Подсказка 1
* Вложенный `for` петли должны быть использованы для поиска через каждый элемент массива.
```javascript
for (let i = 0; i < arr.length; i++) {
```
\`
## Подсказка 2
* Затем каждый элемент массива следует сравнить с параметром `elem` переданным через функцию `filteredArray()` .
```javascript
if (arr[i].indexOf(elem)==-1){
```
## Подсказка 3
* Если совпадение не найдено, то `newArr` добавляет весь субаран. Функция `push()` здесь очень полезна.
```javascript
newArr.push(arr[i]);
```
* После того, как весь подъярус будет добавлен в `newArr` цикл продолжит со следующего элемента.
## Решение:
```javascript
function filteredArray(arr, elem) {
let newArr = [];
// change code below this line
for (let i = 0; i < arr.length; i++) {
if (arr[i].indexOf(elem)==-1){ //Checks every parameter for the element and if is NOT there continues the code
newArr.push(arr[i]); //Inserts the element of the array in the new filtered array
};
};
// change code above this line
return newArr;
};
// change code here to test different cases:
console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3));
```

View File

@@ -0,0 +1,45 @@
---
title: Modify an Array Stored in an Object
localeTitle: Измените массив, хранящийся в объекте
---
## Измените массив, хранящийся в объекте
### Метод:
* Функция может быть записана только в двух строках кода.
* Первая строка должна просто использовать функцию `push()` чтобы добавить параметр `friend` в массив, найденный в `user.data.friend` . Вторая строка вернет измененный массив.
* Помните, что `user` должен ссылаться на первый параметр, присвоенный функции `addFriend()` .
### Решение:
```javascript
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) {
// change code below this line
userObj.data.friends.push(friend);
return userObj.data.friends;
// change code above this line
}
console.log(addFriend(user, 'Pete'));
```

View File

@@ -0,0 +1,46 @@
---
title: Modify an Object Nested Within an Object
localeTitle: Изменение объекта, вложенного в объект
---
## Изменение объекта, вложенного в объект
Метод:
* Помните, что объект, который вы хотите изменить, имеет два уровня глубины, `dot-notation` проще использовать в этом случае.
* Просто определите объект, а затем используйте `dot-notation` для доступа ко второму объекту и, наконец, конечный элемент, который вы хотите изменить.
## Пример:
```javascript
let myObject = {
level_1: 'outside',
first_level_object: {
level_2: '2 levels deep',
second_level_object: {
level_3: '3 levels deep'
}
}
};
//The following line of code will modify the data found in level_2.
myObject.first_level_object.level_2 = 'level-2 has been reached';
```
## Решение:
```javascript
let userActivity = {
id: 23894201352,
date: 'January 1, 2017',
data: {
totalUsers: 51,
online: 42
}
};
// change code below this line
userActivity.data.online = 45;
// change code above this line
console.log(userActivity);
```

View File

@@ -0,0 +1,21 @@
---
title: Remove Items from an Array with pop() and shift()
localeTitle: Удалите элементы из массива с помощью pop () и shift ()
---
## Удалите элементы из массива с помощью pop () и shift ()
* Метод `.pop()` метод `.shift()` должны быть вызваны и инициализированы с помощью `popped` и `shifted` переменных, чтобы вернуть правильный ответ от функции.
## Решение:
```javascript
function popShift(arr) {
let popped = arr.pop();
let shifted = arr.shift();
return [shifted, popped];
}
// do not change code below this line
console.log(popShift(['challenge', 'is', 'not', 'complete']));
```

View File

@@ -0,0 +1,23 @@
---
title: Remove Items Using splice()
localeTitle: Удаление элементов с помощью splice ()
---
## Удаление элементов с помощью splice ()
* Функция `splice()` должна быть вызвана в массиве `arr` , чтобы удалить 1 или более элементов из центра массива.
* Массив `arr` настоящее время добавляет значение 16. Просто удалите столько переменных, сколько необходимо для возврата 10.
## Решение:
```javascript
function sumOfTen(arr) {
// change code below this line
arr.splice(1,2);
// change code above this line
return arr.reduce((a, b) => a + b);
}
// do not change code below this line
console.log(sumOfTen([2, 5, 1, 5, 2, 1]));
```

View File

@@ -0,0 +1,28 @@
---
title: Use an Array to Store a Collection of Data
localeTitle: Используйте массив для хранения коллекции данных
---
## Используйте массив для хранения коллекции данных
### Метод:
* В JS массивы являются одной из наиболее часто используемых структур данных. В отличие от других языков Массивы в JS могут хранить разные типы данных и также могут изменять их размер во время выполнения и, следовательно, также называются «Динамические массивы». Они также индексируются 0.
* Массивы могут быть инициализированы по-разному:
1. Литералы массива
2. Конструкторы массивов
* В этой задаче мы сосредоточимся на литературе Array. Для инициализации массива мы просто делаем `let arr = [];`
* Мы можем добавить значения к этому массиву, обратившись к его индексу, например: `javascript let arr = []; arr[0] = "hello"; console.log(arr); // ["hello"]`
* Мы также можем инициализировать значения в массиве, когда мы объявляем его, например: `javascript let arr = [1, 2, 3, "John"];`
* В этой задаче вам нужно создать массив с не менее чем 5 элементами и по крайней мере одной строкой, одним числом и одним логическим.
### Решение:
```js
let yourArray = ["a", 2, true, "c", null, {name: "john"}];
```
### Ресурсы
Дальнейшее чтение массивов в [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array) .

View File

@@ -0,0 +1,27 @@
---
title: Use the delete Keyword to Remove Object Properties
localeTitle: Использование ключа удаления для удаления свойств объекта
---
## Использование ключа удаления для удаления свойств объекта
[Developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete) предоставляет исчерпывающее руководство по оператору удаления.
### Решение:
```javascript
let foods = {
apples: 25,
oranges: 32,
plums: 28,
bananas: 13,
grapes: 35,
strawberries: 27
};
// change code below this line
delete foods.oranges;
delete foods.plums;
delete foods.strawberries;
// change code above this line
console.log(foods);
```

View File

@@ -0,0 +1,17 @@
---
title: Access Array Data with Indexes
localeTitle: Доступ к массиву данных с индексами
---
## Доступ к массиву данных с индексами
Первый элемент массива находится в нулевом положении. Итак, если вы хотите получить доступ к первому элементу массива, вы можете сделать это так:
```javascript
var arr = ["Programming", 123, "Coding", 789];
var firstElem = arr[0] // This is "Programming"
var thirdElem = arr[2] // This is "Coding"
var fourthElem = arr[3] // This is 789
```
Обратите внимание, что длина массива равна 4, а позиция последнего элемента массива равна 3.

View File

@@ -0,0 +1,29 @@
---
title: Access Multi-Dimensional Arrays With Indexes
localeTitle: Доступ к многомерным массивам с индексами
---
## Доступ к многомерным массивам с индексами
Рассмотрим следующий многомерный массив:
```javascript
var arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]];
```
Это то, что выглядит в табличной форме.
| Должность | 0 | 1 | 2 | 3 | | --- | --- | --- | --- | --- | | **0** | 1 | 4 | 7 | 10 | | **1** | 2 | 5 | 8 | 11 | | **2** | 3 | 6 | 9 | 12 |
Теперь все, что вам нужно сделать, это выбрать координаты желаемых данных! Например, если мы хотим, чтобы `myNum` равнялся 8, тогда ...
```javascript
var myNum = arr[2][1]; // Equal to 8
```
Или, если вы хотите, чтобы он равнялся 1. Вы делаете ...
```javascript
var myNum = arr[0][0]; // Equal to 1
```
Сначала вы начинаете, выбирая, в каком столбце находится номер, затем вы выбираете строку. Это похоже на координатную плоскость xy!

View File

@@ -0,0 +1,69 @@
---
title: Accessing Nested Arrays
localeTitle: Доступ к вложенным массивам
---
## Доступ к вложенным массивам
### Доступ к элементам в массиве с использованием нотной записи в виде скобок `[]`
```js
var fruitBasket = ['apple', 'banana' 'orange', 'melon'];
var favoriteFruit = fruitBasket[2];
console.log(favoriteFruit) // 'orange'
```
В этом примере наш любимый фрукт - «оранжевый», который находится в индексе `2` в массиве `fruitBasket` . Используя Braket обозначения, мы относим индекс `2` из `fruitBasket` массива `favoriteFruit` . Это делает `favoriteFruit` равным «оранжевому».
### Доступ к объектам в массивах с использованием скобки `[]` и точки `.` обозначение
```js
var garage = [
{
type: 'car',
color: 'red',
make: 'Ford'
},
{
type: 'motorbike',
color: 'black',
make: 'Yamaha'
},
{
type: 'bus',
color: 'yellow',
make: 'Blue Bird'
}
];
var busColor = garage[2].color; // 'yellow'
```
## Решение:
```js
// Setup
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];
```

View File

@@ -0,0 +1,50 @@
---
title: Accessing Nested Objects
localeTitle: Доступ к вложенным объектам
---
## Доступ к вложенным объектам
Подсказка: **_«Использовать обозначения скобок для свойств с пробелом в их имени»._**
Если мы посмотрим на наш объект:
```javascript
var myStorage = {
"car": {
"inside": {
"glove box": "maps",
"passenger seat": "crumbs"
},
"outside": {
"trunk": "jack"
}
}
};
```
Имя нашего объекта - `myStorage` .
| - Внутри у нас есть вложенный объект, называемый `car` .
| --- Внутри, что у нас есть еще два вызова `inside` и `outside` каждого с их собственные свойства
Вы можете визуализировать структуру объекта, как это, если это помогает:
```
myStorage
|-- car
|--- inside
|----- glove box: maps
|----- passenger seat: crumbs
|--- outside
|----- trunk: jack
```
Нам предлагается назначить содержимое `glove box` , который мы видим, вложен в `inside` объект, который, в свою очередь, вложен в объект `car` .
Мы можем использовать точечную нотацию для доступа к `glove box` следующим образом:
```javascript
var gloveBoxContents = myStorage.car.inside'complete here'
```
Вы должны `complete here` заменить `complete here` правильный способ доступа к свойству. См. Подсказку выше, если вы застряли.

View File

@@ -0,0 +1,21 @@
---
title: Accessing Object Properties with Bracket Notation
localeTitle: Доступ к объектным свойствам с помощью скобок
---
## Доступ к объектным свойствам с помощью скобок
Вот одно из возможных решений:
```js
var testObj = {
"an entree": "hamburger",
"my side": "veggies",
"the drink": "water"
};
// Only change code below this line
var entreeValue = testObj["an entree"]; // Change this line
var drinkValue = testObj["the drink"]; // Change this line
```

View File

@@ -0,0 +1,21 @@
---
title: Accessing Object Properties with Dot Notation
localeTitle: Доступ к объектным свойствам с нотами Dot
---
## Доступ к объектным свойствам с нотами Dot
Вот одно из возможных решений:
```js
var testObj = {
"hat": "ballcap",
"shirt": "jersey",
"shoes": "cleats"
};
// Only change code below this line
var hatValue = testObj.hat; // Change this line
var shirtValue = testObj.shirt; // Change this line
```

View File

@@ -0,0 +1,22 @@
---
title: Accessing Object Properties with Variables
localeTitle: Доступ к объектам с переменными
---
## Доступ к объектам с переменными
Вот работающее решение, если вы застряли:
```js
// Setup
var testObj = {
12: "Namath",
16: "Montana",
19: "Unitas"
};
// Only change code below this line;
var playerNumber = 16; // Change this Line
var player = testObj[playerNumber]; // Change this Line
```

View File

@@ -0,0 +1,33 @@
---
title: Add New Properties to a JavaScript Object
localeTitle: Добавить новые объекты в объект JavaScript
---
## Добавить новые объекты в объект JavaScript
Вот пример:
```js
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"]
};
ourDog.bark = "bow-wow";
```
Вот решение:
```js
var myDog = {
"name": "Happy Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"]
};
// Only change code below this line.
myDog.bark = "woof";
```

View File

@@ -0,0 +1,11 @@
---
title: Add Two Numbers with JavaScript
localeTitle: Добавить два номера с JavaScript
---
# Добавить два номера с JavaScript
JavaScript использует символ `+` для добавления.
```
var sum = 10 + 10; //sum gets the value 20
```

View File

@@ -0,0 +1,28 @@
---
title: Adding a Default Option in Switch Statements
localeTitle: Добавление опции по умолчанию в операторы switch
---
# Добавление опции по умолчанию в операторы switch
* Добавление опции по умолчанию гарантирует, что в случае, если ваша переменная не соответствует ни одному из параметров, будет использоваться значение по умолчанию.
## Решение:
```javascript
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;
}
```

View File

@@ -0,0 +1,13 @@
---
title: Appending Variables to Strings
localeTitle: Добавление переменных в строки
---
## Добавление переменных в строки
Убедитесь, что правильность и правильность написания. Добавляемые строки (хранимые внутри переменных) могут быть выполнены следующим образом:
```
var adj = "happy!";
var sent = "Today, I woke up being ";
sent += adj; // The result is "Today, I woke up being happy!"
```

View File

@@ -0,0 +1,14 @@
---
title: Assignment with a Returned Value
localeTitle: Назначение с возвращенной стоимостью
---
## Назначение с возвращенной стоимостью
Функции выступают в качестве заполнителей для выводимых данных. В принципе, вы можете назначить вывод функции переменной, как и любые нормальные данные.
Вот базовое решение для кода:
```javascript
processed = processArg(7); // Equal to 2
```

View File

@@ -0,0 +1,19 @@
---
title: Build JavaScript Objects
localeTitle: Создание объектов JavaScript
---
# Создание объектов JavaScript
Объекты похожи на массивы, за исключением того, что вместо использования индексов для доступа и изменения их данных вы получаете доступ к данным в объектах через так называемые свойства.
Вот пример объекта:
```
var cat = {
"name": "Whiskers",
"legs": 4,
"tails": 1,
"enemies": ["Water", "Dogs"]
};
```
Объекты полезны для хранения данных структурированным способом и могут представлять объекты реального мира, такие как кошки.

View File

@@ -0,0 +1,63 @@
---
title: Chaining If Else Statements
localeTitle: Связывание с другими сообщениями
---
## Связывание с другими сообщениями
* `If` : первое условие в каждом операторе if / else, в случае, если условие стинно_ , выполните код и проигнорируйте остальные.
* `Else if` : никогда нельзя использовать в качестве первого условного. Он всегда является условным после того, как `if` , если условие истинно, выполните код. В противном случае переходит в следующее условие.
* `Else` : case все предыдущие условные _выражения_ являются ожными_ , **иначе** выполняется.
### Объяснение проблемы:
_Записывать прикованные `if` / `else if` выражения для выполнения следующих условий_ :
_`num < 5` - возвращение "Tiny" `num < 10` - возврат "Small" `num < 15` - возврат "Средний" `num < 20` - возврат "Большой" `num >= 20` - возврат "Огромный"_
#### Подсказка 1
Помните, что вы можете комбинировать (цепочки) несколько `if...else` операторов один за другим, пока ваш последний не использует `else if (condition) {do this}` .
> _попытаться решить проблему сейчас_
>
> #### Подсказка 2
>
> Иногда, когда вы пишете больше кода, чем вы привыкли, и он не работает, мелочи - вот что нас предает. Проверка недостающих точек с запятой, скобок и т. Д. Может оказаться очень полезной. _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
**Решение впереди!**
## Решение:
```javascript
function testSize(num) {
// Only change code below this line
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";
}
// Only change code above this line
}
```
· Запустить код в [repl.it](https://repl.it/@AdrianSkar/Basic-JS-Chaining-ifelse-statements)
### Обозначение кода
Функция сначала проверяет условие `if` `(num < 5)` . Если он оценивает значение `true` , он возвращает выражение между фигурными фигурными скобками («Tiny»). Если это не так, оно проверяет следующее условие до последнего оператора `else` .
### Ресурсы
* ["if ... else" - _ссылка MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if…else)

View File

@@ -0,0 +1,22 @@
---
title: Comment Your JavaScript Code
localeTitle: Комментарий
---
## Комментарий
Комментирование позволяет вводить материал, который вы не хотите, чтобы компьютер работал как код. Например, заметки для других программистов, направлений и т. Д. Вот как создать однострочный комментарий.
```
// Hey, I'm a comment!
```
Теперь, если вы хотите прокомментировать весь абзац, который можно легко выполнить с помощью ...
```
/*
Hey, I'm a paragraph comment.
This allows for programmers to
write tons and tons of random
words, without the fear of me
being compiled!
*/
```

View File

@@ -0,0 +1,46 @@
---
title: Comparison with the Equality Operator
localeTitle: Сравнение с оператором равенства
---
## Сравнение с оператором равенства
### Объяснение проблемы:
обавьте оператор равенства в указанную строку, чтобы функция вернула «Равно», когда `val` эквивалентно 12._
#### Подсказка 1
Помните, что _равенство отличается от присваивания ( `=` ), которое присваивает значение справа от оператора переменной в левой части._ [1](#cite1)
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
**Решение впереди!**
## Базовое решение:
```javascript
function testEqual(val) {
if (val == 12) { // Change this line
return "Equal";
}
return "Not equal";
}
// Change this value to test
testEqual(10);
```
· [Запустить код в repl.it](https://repl.it/@AdrianSkar/Basic-JS-Equality-operator)
### Обозначение кода
Сначала функция оценивает, является `if` условие `(val == 12)` равным `true` . Если это так, оно возвращает выражение между фигурными фигурными скобками («Равно»). Если это не так, оно возвращает следующий оператор `return` вне их («Не равно»).
### источники
1 . [«Базовый JavaScript: сравнение с оператором равенства», урок fCC в _Javascript Algorithms and Data Structures Certification_](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator)
### Ресурсы
* [«Оператор равенства» - _ссылка MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Equality_())

View File

@@ -0,0 +1,22 @@
---
title: Comparison with the Greater Than Operator
localeTitle: Сравнение с более крупным оператором
---
## Сравнение с более крупным оператором
`>` (Greater Than) - это логический оператор, который возвращает истинный случай, значение слева выше, чем значение справа.
## Основное решение
```javascript
function testGreaterThan(val) {
if (val > 100)
return "Over 100";
if (val > 10)
return "Over 10";
return "10 or Under";
}
```

View File

@@ -0,0 +1,22 @@
---
title: Comparison with the Greater Than Or Equal To Operator
localeTitle: Сравнение с более высоким или равным оператору
---
## Сравнение с более высоким или равным оператору
* `>=` (Больше или равно) является логическим оператором, который возвращает истинный случай, значение слева является тем **же или более высоким,** чем значение справа.
## Основное решение
```javascript
function testGreaterOrEqual(val) {
if (val >= 20)
return "20 or Over";
if (val >= 10)
return "10 or Over";
return "Less than 10";
}
```

View File

@@ -0,0 +1,20 @@
---
title: Comparison with the Inequality Operator
localeTitle: Сравнение с оператором неравенства
---
## Сравнение с оператором неравенства
* `!=` (Неравенство) является логическим оператором, который возвращает истинный случай, значение слева отличается от значения справа.
* Оператор неравенства считает, что `7` и `"7"` должны быть одинаковыми, поскольку он не сравнивает тип переменной.
## Основное решение
```javascript
function testNotEqual(val) {
if (val != 99)
return "Not Equal";
return "Equal";
}
```

View File

@@ -0,0 +1,22 @@
---
title: Comparison with the Less Than Operator
localeTitle: Сравнение с Менеджером оператора
---
## Сравнение с Менеджером оператора
**`<`** (Меньше) является логическим оператором, который возвращает истинный регистр, значение слева ниже, чем значение справа.
## Основное решение
```javascript
function testLessThan(val) {
if (val < 25)
return "Under 25";
if (val < 55)
return "Under 55";
return "55 or Over";
}
```

View File

@@ -0,0 +1,22 @@
---
title: Comparison with the Less Than Or Equal To Operator
localeTitle: Сравнение с меньшим или равным оператору
---
## Сравнение с меньшим или равным оператору
**`<=`** (Меньше или равно) является логическим оператором, который возвращает истинный случай, значение слева является тем **же или меньше,** чем значение справа.
## Основное решение
```javascript
function testLessOrEqual(val) {
if (val <= 12)
return "Smaller Than or Equal to 12";
if (val <= 24)
return "Smaller Than or Equal to 24";
return "More Than 24";
}
```

View File

@@ -0,0 +1,56 @@
---
title: Comparison with the strict equality operator
localeTitle: Сравнение со строгим оператором равенства
---
## Сравнение со строгим оператором равенства
### Объяснение проблемы:
· спользуйте оператор строгого равенства в выражении `if` чтобы функция вернула «Равно», когда `val` строго равно `7` ._
#### Подсказка 1
Помните из последнего упражнения, что _равенство отличается от присваивания ( `=` ), которое присваивает значение справа от оператора переменной в левой части._ [1](#cite1)
> _попытаться решить проблему сейчас_
>
> #### Подсказка 2
>
> _В отличие от оператора равенства, который пытается преобразовать оба значения в общий тип, строгий оператор равенства не выполняет преобразование типа._ [2](#cite2) _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
**Решение впереди!**
## Базовое решение:
```javascript
// Setup
function testStrict(val) {
if (val === 7) { // Change this line
return "Equal";
}
return "Not equal";
}
// Change this value to test
testStrict(10);
```
### Обозначение кода
Функция сначала оценивает, соответствует `if` условие `(val === 7)` `true` . Если это так, оно возвращает выражение между фигурными фигурными скобками («Равно»). Если это не так, оно возвращает следующий оператор `return` вне их («Не равно»).
### источники
1 . [«Базовый JavaScript: сравнение с оператором равенства», урок fCC в _Javascript Algorithms and Data Structures Certification_](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator)
2 . [«Базовый JavaScript: сравнение с оператором строгого равенства», урок fCC в _Javascript Algorithms and Data Structures Certification_](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-equality-operator)
### Ресурсы
* ["if ... else" - _ссылка MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if…else)
* [Кондов, Александр. «Понимание JS: Принуждение». _Хакернун_](https://hackernoon.com/understanding-js-coercion-ff5684475bfc) , [оступный_](https://hackernoon.com/understanding-js-coercion-ff5684475bfc) 15 сентября 2018 года
* [«Операторы сравнения» - _ссылка на MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)

View File

@@ -0,0 +1,41 @@
---
title: Comparison with the Strict Inequality Operator
localeTitle: Сравнение с оператором строгого неравенства
---
## Сравнение с оператором строгого неравенства
### Объяснение проблемы:
· обавьте `strict inequality operator` `if` чтобы функция вернула «Не равно», когда `val` не строго равно `17` ._
#### Подсказка 1
Оператор строгого неравенства ( `!==` ) вернет `true` если первое значение не равно второму, учитывающему тип значения.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
**Решение впереди!**
## Базовое решение:
```javascript
function testStrictNotEqual(val) {
if (val !== 17) {
return "Not equal";
}
return "Equal";
}
// Change this value to test
testStrictNotEqual(10);
```
### Обозначение кода
Функция сначала оценивает, `if` условие `(val !== 17)` оценивается как `true` учитывая как значение, так и тип значения. Если это так, оно возвращает выражение между фигурными фигурными скобками («Не равно»). Если это не так, он возвращает следующий оператор `return` вне их («Равно»).
### Ресурсы
* [«Нетождественное / строгое неравенство (! ==)» - _ссылка MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Non-identity_strict_inequality_(!))

View File

@@ -0,0 +1,53 @@
---
title: Comparisons with the && (logical AND) operator
localeTitle: Сравнение с оператором && (логический AND)
---
## Сравнение с оператором && (логический AND)
### Объяснение проблемы:
· _Объедините два оператора if в один оператор, который вернет `"Yes"` если значение `val` меньше или равно `50` и больше или равно `25` . В противном случае вернется `"No"` ._
#### Подсказка 1
Логический оператор AND ( `&&` ) сравнивает оба оператора и возвращает `true` только если оба они являются истинными или могут быть преобразованы в true (правдивый).
> _попытаться решить проблему сейчас_
#### Подсказка 2
Помните, что этот эффект может быть также достигнут посредством вложенных операторов `if` .
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
**Решение впереди!**
## Базовое решение:
```javascript
function testLogicalAnd(val) {
// Only change code below this line
if (val <= 50 && val >= 25) {
return "Yes";
}
// Only change code above this line
return "No";
}
// Change this value to test
testLogicalAnd(10);
```
· [Запустить код в repl.it](https://repl.it/@AdrianSkar/Basic-JS-Comparison-with-the-and-operator)
### Обозначение кода
Функция сначала оценивает, `if` условие `val <= 50` оценивает `true` преобразование `val` в число, если необходимо, то делает то же самое с `val >=25` из-за логического оператора AND ( `&&` ); если оба возвращают true, `return "Yes"` оператор `return "Yes"` .
### Ресурсы
* [«Логические операторы» - _ссылка MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_Operators)

View File

@@ -0,0 +1,19 @@
---
title: Comparisons with the Logical Or Operator
localeTitle: Сравнение с логическим или оператором
---
## Сравнение с логическим или оператором
### Руководство: Следуйте коду, приведенному в примере
**Осторожно, спойлеры**
Ниже приведен пример кода (самый простой способ).
```javascript
if ( val < 10 || val > 20 ) {
return "Outside";
}
```
Вышеприведенный код вернет «Outside», только если `val` находится между 10 и 20 (включительно).

View File

@@ -0,0 +1,12 @@
---
title: Compound Assignment With Augmented Addition
localeTitle: Соединение с добавленным дополнением
---
## Соединение с добавленным дополнением
Компьютеры читаются слева направо. Таким образом, использование оператора «+ =» означает, что переменная добавляется с правильным номером, тогда переменная присваивается сумме. Вот так:
```
var a = 9;
a += 10; // Now, 'a' is equal to 19
```

View File

@@ -0,0 +1,12 @@
---
title: Compound Assignment With Augmented Division
localeTitle: Соединение с расширенным подразделением
---
## Соединение с расширенным подразделением
Компьютеры читаются слева направо. Таким образом, использование оператора '/ =' означает, что переменная делится на число справа, то переменная присваивается частному. Вот так:
```
var d = 10;
d /= 5; // Now, 'd' is equal to 2
```

View File

@@ -0,0 +1,12 @@
---
title: Compound Assignment With Augmented Multiplication
localeTitle: Соединение с расширенным умножением
---
## Соединение с расширенным умножением
Компьютеры читаются слева направо. Таким образом, использование оператора присваивания умножения означает, что переменная умножается на число справа, то переменная присваивается произведению. Вот так:
```
var c = 2;
c *= 3; // Now, 'c' is equal to 6
```

View File

@@ -0,0 +1,12 @@
---
title: Compound Assignment With Augmented Subtraction
localeTitle: Соединение с расширенной вычитанием
---
## Соединение с расширенной вычитанием
Компьютеры читаются слева направо. Таким образом, использование оператора «= =» означает, что переменная вычитается по числу справа, то переменная присваивается разнице. Вот так:
```
var b = 10;
b -= 4; // Now, 'b' is 6
```

View File

@@ -0,0 +1,12 @@
---
title: Concatenating Strings with Plus Operator
localeTitle: Конкатенация строк с помощью оператора Plus
---
## Конкатенация строк с помощью оператора Plus
Конкатенат означает соединение. Подумайте о «+» операторе, как цепь, связывающая строки вместе; добавьте строки так же, как вы добавляете числа. Убедитесь, что ваше правописание правильное! Обратите внимание на пробелы между словами.
```
var str = "Good " + "job!" // It says "Good job!"
var abc = "Good" + "job!" // It says "Goodjob!"
```

View File

@@ -0,0 +1,13 @@
---
title: Concatenating Strings with the Plus Equals Operator
localeTitle: Объединение строк с помощью оператора Plus Equals
---
## Объединение строк с помощью оператора Plus Equals
Оператор «+ =» может легко конкатенировать (ссылку) строки. Убедитесь, что ваше правописание правильное, и вы оставили соответствующие пробелы.
```
var str = "Hello ";
str += "coding"; // Now the string reads "Hello coding"
str += "camper!"; // And now the string reads "Hello codingcamper!"
```

View File

@@ -0,0 +1,14 @@
---
title: Constructing Strings with Variables
localeTitle: Построение строк с переменными
---
## Построение строк с переменными
Добавьте переменные, которые хранят строки, для создания более длинных строк. Убедитесь, что правописание и интервал правильные.
```
var myName = "Bobby";
var myFavLetter = "B";
var sentence = "Hello, I'm " + myName + ". My favorite letter is " + myFavLetter + ".";
//The result is "Hello, I'm Bobby. My favorite letter is B.
```

View File

@@ -0,0 +1,48 @@
---
title: Count Backwards With a For Loop
localeTitle: Count Backwards с помощью цикла
---
## Count Backwards с помощью цикла
Вот пример:
```javascript
// Example
var ourArray = [];
for (var i = 10; i > 0; i -= 2) {
ourArray.push(i);
}
// Setup
var myArray = [];
// Only change code below this line.
```
#### СОВЕТ: 1
* создать новый цикл for myArray
#### СОВЕТ: 2
* начните с первого нечетного числа перед 9
# ПРЕДУПРЕЖДЕНИЕ SPOILER: РЕШЕНИЕ ВПЕРЕДИ
```javascript
var ourArray = [];
for (var i = 10; i > 0; i -= 2) {
ourArray.push(i);
}
// Setup
var myArray = [];
// Only change code below this line.
for (var i = 9; i > 0; i-=2){
myArray.push(i)
}
```

View File

@@ -0,0 +1,134 @@
---
title: Counting Cards
localeTitle: Счетные карточки
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
В игре **Blackjack** в казино игрок может получить преимущество над домом, отслеживая относительное количество высоких и низких карт, оставшихся в колоде. Это называется подсчет карт.
Наличие более высоких карт, оставшихся в колоде, способствует игроку. Каждой карте присваивается значение в соответствии с приведенной ниже таблицей. Когда счет положителен, игрок должен делать ставки на высокий уровень. Когда счетчик равен нулю или отрицателен, игрок должен делать ставки на низком уровне.
Значение | Карты
\----- | : -------------------:
+1 | 2, 3, 4, 5, 6
0 | 7, 8, 9
\-1 | 10, 'J', 'Q', 'K', 'A'
Вы будете писать функцию подсчета карт. Он получит параметр **карты** и увеличит или уменьшит глобальную переменную **счета в** соответствии со значением карты (см. Таблицу). Затем функция вернет строку с текущим счетчиком и строкой `Bet` если счетчик положителен, или `Hold` если счетчик равен нулю или отрицателен. Текущий счетчик и решение игрока ( `Bet` или `Hold` ) должны быть разделены одним пробелом.
* Изменить код ниже `// Only change code below this line` и до `// Only change code above this line`
* Убедитесь, что вы редактируете внутреннюю часть функции `cc` .
* Используйте то, что вы изучили, чтобы проверить значение каждого параметра **карты,** переданного в функцию.
* Сохраните подсчет этого числа.
* Если конечный счет равен 1 или больше, верните **\# Удержание** .
* Если итоговый счет равен 0 или меньше, верните **\# ставка** .
**Пример:**
* \-3 Удержание
* 5 ставок
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
Используйте оператор `switch` (или `else if` ), чтобы подсчитать значение каждой карты.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Добавьте / вычтите значение каждой карты для **подсчета** переменных. Если карта стоит 0, ничего не делайте.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
После того, как вы подсчитали карты, используйте инструкцию `if` чтобы проверить значение **count** . Кроме того, убедитесь, что у вашего `return` есть пробел между номером и строкой.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```javascript
function cc(card) {
// Only change code below this line
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--;
break;
}
if (count > 0){
return count + " Bet";
} else {
return count + " Hold";
}
// Only change code above this line
}
```
### Код Объяснение:
* Проверьте значение каждой карточки с помощью оператора `switch` .
* **Счетчик** переменных:
* Увеличивает на 1, если карта равна 2, 3, 4, 5 или 6.
* Поскольку 7, 8 и 9 ничего не стоят, мы игнорируем эти карты в инструкции `switch` .
* Уменьшает на 1, если карта равна 10, 'J', 'Q', 'K' или 'A'.
* Проверьте значение **счетчика** и верните соответствующий ответ.
**Пример Run**
* `cc(2);` пробеги.
* Оператор `switch` обращается к `case 2` , спрыгивает вниз и добавляет 1 к `count` переменных.
* Затем оператор `switch` попадает в `break` и `cc(3);` пробеги.
* Этот цикл продолжается до окончательного вызова, `cc('A');` ,
* После оператора `switch` оператор `if` проверяет `count` , который теперь равен 0.
* Затем он опускается до инструкции `else` , которая вернет **0 Hold** .
**_Примечание_** . Как упоминалось ранее, оператор `switch` мог также быть инструкцией `else if` .
## Дополнительное решение для кода:
```javascript
function cc(card) {
// Only change code below this line
var regex = /[JQKA]/;
if (card > 1 && card < 7){count++;}
else if (card === 10 || String(card).match(regex)){count--;}
if (count > 0) return count + " Bet";
return count + " Hold";
// Only change code above this line
}
```
· Запустить код в [repl.it.](https://repl.it/@AdrianSkar/Basic-JS-Counting-cards)
### Обозначение кода
· Функция сначала оценивает, является `if` `card` условия значением больше `1` и ниже `7` , и в этом случае она увеличивает `count` на единицу. · Если карта равна `10` или выше, она уменьшает `count` на единицу. · Переменное `regex` является [регулярным выражением](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) , представляющее значение (буквы) для высших карт. · Оператор `else` проверяет эти значения с помощью `|| (logical OR)` оператор; сначала для `10` а затем для любой строки, которая соответствует регулярному выражению с помощью [String.match ()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) .
#### Ресурсы
* [Счет в Википедии](https://en.wikipedia.org/wiki/Card_counting)
* [Задача: выбор из множества опций с помощью операторов Switch](http://www.freecodecamp.com/challenges/selecting-from-many-options-with-switch-statements)
* [Задача: цепочка в случае других утверждений](http://www.freecodecamp.com/challenges/chaining-if-else-statements)
* [Задача: увеличить номер с помощью Javascript](http://www.freecodecamp.com/challenges/increment-a-number-with-javascript)

View File

@@ -0,0 +1,11 @@
---
title: Create Decimal Numbers with JavaScript
localeTitle: Создание десятичных чисел с помощью JavaScript
---
# Создание десятичных чисел с помощью JavaScript
Число переменных JavaScript может иметь десятичные значения.
```
var myDecimal = 2.8;
```

View File

@@ -0,0 +1,28 @@
---
title: Declare JavaScript Variables
localeTitle: Объявление переменных JavaScript
---
# Объявление переменных JavaScript
Когда мы храним данные в структуре данных, мы называем это переменной. Переменные JavaScript написаны на верблюжьем корпусе. Примером случая с верблюдом является: `camelCase` .
Вы можете объявить переменную таким образом
```js
var myName = "Rafael";
```
ES6 представила два других способа объявления переменных. **let** и **const** . усть_ довольно похоже на var и по большей части взаимозаменяемо:
```js
let myAge = 36;
```
Где _пусть_ отличается, находится в его объеме. Когда мы объявляем использование _var_ , оно является глобальным по объему. Когда мы объявляем использование _let_ , область действия ограничена этой функцией. Если вы хотите использовать переменную _let_ вне функции, вы должны сделать ее глобальной в области видимости или переопределить ее в следующей функции.
**const** , с другой стороны, может быть объявлен только один раз. Его ценность никогда не изменится.
```js
const myName = "Christina";
```

View File

@@ -0,0 +1,16 @@
---
title: Declare String Variables
localeTitle: Объявлять строковые переменные
---
## Объявлять строковые переменные
В JavaScript переменные являются **динамическими** . Это означает, что они могут удерживать числа, строки или любой другой тип данных в данный момент времени. Чтобы объявить строку, просто **инициализируйте** (создайте) переменную:
```
var a;
```
Затем, используя одиночные или двойные кавычки, объявите строку:
```
a = "Hello Camper!";
```

View File

@@ -0,0 +1,13 @@
---
title: Decrement a Number with JavaScript
localeTitle: Уменьшить число с помощью JavaScript
---
## Уменьшить число с помощью JavaScript
Уменьшить число с помощью оператора «-»:
```
var a = 5;
a--; // Now, 'a' is 4
--a; // Now, 'a' is 3
```

View File

@@ -0,0 +1,36 @@
---
title: Delete Properties from a JavaScript Object
localeTitle: Удаление свойств из объекта JavaScript
---
## Удаление свойств из объекта JavaScript
### ПОДСКАЗКА: 1
* измените свойства myDog с помощью точечной нотации
# ПРЕДУПРЕЖДЕНИЕ SPOILER: РЕШЕНИЕ ВПЕРЕДИ
```javascript
var ourDog = {
"name": "Camper",
"legs": 4,
"tails": 1,
"friends": ["everything!"],
"bark": "bow-wow"
};
delete ourDog.bark;
// Setup
var myDog = {
"name": "Happy Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"],
"bark": "woof"
};
// Only change code below this line.
delete myDog.tails;
```

View File

@@ -0,0 +1,11 @@
---
title: Divide One Decimal by Another with JavaScript
localeTitle: Разделить одно десятичное на другое с помощью JavaScript
---
# Разделить одно десятичное на другое с помощью JavaScript
Javascript использует символ `/` для деления.
```
var quotient = 0.6 / 0.3; //quotient gets the value 2
```

View File

@@ -0,0 +1,11 @@
---
title: Divide One Number by Another with JavaScript
localeTitle: Разделите одно число другим с помощью JavaScript
---
# Разделите одно число другим с помощью JavaScript
Javascript использует символ `/` для деления.
```
var quotient = 6 / 3; //quotient will get value 2
```

View File

@@ -0,0 +1,9 @@
---
title: Escape Sequences in Strings
localeTitle: Последовательности выхода в строках
---
## Последовательности выхода в строках
Это заглушка. [Помогите нашему сообществу расширить его](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/escape-sequences-in-strings/index.md) .
[Это руководство по быстрому стилю поможет вам принять ваш запрос на тягу](https://github.com/freecodecamp/guides/blob/master/README.md) .

View File

@@ -0,0 +1,19 @@
---
title: Escaping Literal Quotes in Strings
localeTitle: Исключение буквенных котировок в строках
---
## Исключение буквенных котировок в строках
* Когда вам нужно использовать специальный символ , такие как `"` внутри строки , вам нужно , чтобы избежать его использования `\` .
* Если вы используете двойные кавычки `"` для строки, одинарные кавычки `'` в строке, ее не нужно экранировать.
* Если вы используете одиночные кавычки `'` для строки, двойные кавычки `"` в строке не нужно экранировать.
## Решение
```javascript
var myStr = "I am a \"double quoted\" string inside \"double quotes\".";
var otherStr = 'I am a \'single quoted\' string inside \'single quotes\'.';
var noEscapeSingle = "There is no need to 'escape' the single quotes.";
var noEscapeDouble = 'There is no need to "escape" the double quotes.';
```

View File

@@ -0,0 +1,14 @@
---
title: Find the Length of a String
localeTitle: Найти длину строки
---
## Найти длину строки
Строки имеют **атрибут** (функция), называемый длиной. Все, что вам нужно сделать, это пометить его после строки / переменной.
```
var str1 = "Hello";
var length1 = str1.length; // This returns 5
var length2 = " Camper".length; // This returns 7 because the space is counted as one character.
```

View File

@@ -0,0 +1,11 @@
---
title: Finding a Remainder in JavaScript
localeTitle: Поиск остатка в JavaScript
---
# Поиск остатка в JavaScript
Оператор остатка `%` дает остаток от деления двух чисел.
```
var remainder = 11 % 3; //remainder gets the value 2
```

View File

@@ -0,0 +1,38 @@
---
title: Generate Random Fractions with JavaScript
localeTitle: Генерировать случайные дроби с помощью JavaScript
---
# Генерировать случайные дроби с помощью JavaScript
Случайные числа полезны для создания случайного поведения.
JavaScript имеет функцию `Math.random()` которая генерирует случайное десятичное число между 0 (включительно) и не совсем до 1 (исключая). Таким образом, `Math.random()` может возвращать 0, но никогда не возвращает 1.
## Заметка
Подобно сохранению значений с помощью Equal Operator, все вызовы функций будут разрешены до выполнения возврата, поэтому мы можем вернуть значение функции `Math.random()` .
## инструкции
Измените randomFraction, чтобы вернуть случайное число вместо возврата 0.
## **Внимание !!!**
### **Осторожно, спойлеры !!**
Решение:
```
function randomFraction() {
// Only change code below this line.
var result = 0;
// Math.random() can generate 0. We don't want to return a 0,
// so keep generating random numbers until we get one that isn't 0
while (result === 0) {
result = Math.random();
}
return result;
// Only change code above this line.
}
```

View File

@@ -0,0 +1,9 @@
---
title: Generate Random Whole Numbers with JavaScript
localeTitle: Генерировать случайные целые числа с помощью JavaScript
---
## Генерировать случайные целые числа с помощью JavaScript
Это заглушка. [Помогите нашему сообществу расширить его](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/generate-random-whole-numbers-with-javascript/index.md) .
[Это руководство по быстрому стилю поможет вам принять ваш запрос на тягу](https://github.com/freecodecamp/guides/blob/master/README.md) .

View File

@@ -0,0 +1,9 @@
---
title: Generate Random Whole Numbers within a Range
localeTitle: Генерировать случайные целые числа в пределах диапазона
---
## Генерировать случайные целые числа в пределах диапазона
**Помощь для прохождения финального теста:** _`randomRange` должен использовать как `myMax` и `myMin` и возвращать случайное число в вашем диапазоне._
Вы не можете пройти окончательный тест, если вы повторно используете функцию `ourRandomRange` внутри вашей формулы `randomRange` . Вам нужно написать свою собственную формулу, которая использует переменные `myMax` и `myMin` . Он будет выполнять ту же работу, что и с помощью `ourRandomRange` , но гарантирует, что вы поняли принципы функций `Math.floor()` и `Math.random()` .

View File

@@ -0,0 +1,62 @@
---
title: Global Scope and Functions
localeTitle: Глобальная область и функции
---
## Глобальная область и функции
Объем переменной - ее видимость; где в коде функция доступна? Вот список различных областей, которые может иметь переменная.
* **Глобальная область** : переменная доступна во всем коде
* **Локальная область** : доступна только в определенной области (например, только внутри функции)
* **Область блока** : доступна в _еще более_ определенной области (например, if-statement)
Ваша задача - понять, как добавление `var` (а не добавление) перед именем переменной может изменить область переменной.
Когда вы добавляете `var` перед именем переменной, его область определяется по месту ее размещения. Вот так:
```javascript
var num1 = 18; // Global scope
function fun() {
var num2 = 20; // Local (Function) Scope
if (true) {
var num3 = 22; // Block Scope (within an if-statement)
}
}
```
Когда вы этого не сделаете, это результат:
```javascript
num1 = 18; // Global scope
function fun() {
num2 = 20; // Global Scope
if (true) {
num3 = 22; // Global Scope
}
}
```
Хорошо, вот основное решение для кода.
```javascript
// Declare your variable here
var myGlobal = 10;
function fun1() {
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);
}
```

View File

@@ -0,0 +1,22 @@
---
title: Global vs. Local Scope in Functions
localeTitle: Глобальная и локальная область функций
---
## Глобальная и локальная область функций
Помните, что глобальная область видимости означает, что переменная доступна во всем коде. Локальный масштаб означает, что переменная доступна в определенном диапазоне.
В этом упражнении у вас есть переменная `outerWear` в глобальной области с «футболкой», поскольку это значение. Теперь вы должны создать другую переменную с именем `outerWear` , но на этот раз внутри функции `myOutfit()` . Основное решение для кода:
```javascript
var outerWear = "T-shirt";
function myOutfit() {
var outerWear = "sweater";
return outerWear;
}
myOutfit();
```
Функция вернет ближайший `outerWear` он может найти. Поскольку мы создали `outerWear` функцию внутри функции, то есть «ближайшую», поэтому функция вернет «свитер».

View File

@@ -0,0 +1,125 @@
---
title: Golf Code
localeTitle: Гольф-код
---
![:triangular_flag_on_post:](https://forum.freecodecamp.com/images/emoji/emoji_one/triangular_flag_on_post.png?v=3 ": Triangular_flag_on_post:") Не забудьте использовать **`Read-Search-Ask`** если вы застряли. Попробуйте подключить программу ![:busts_in_silhouette:](https://forum.freecodecamp.com/images/emoji/emoji_one/busts_in_silhouette.png?v=3 ": Busts_in_silhouette:") и напишите свой собственный код ![:pencil:](https://forum.freecodecamp.com/images/emoji/emoji_one/pencil.png?v=3 ":карандаш:")
### ![:checkered_flag:](https://forum.freecodecamp.com/images/emoji/emoji_one/checkered_flag.png?v=3 ": Checkered_flag:") Проблема Объяснение:
В игре в гольф каждое отверстие имеет **номинальной** означая среднее число **ударов** игрок в гольф , как ожидается , чтобы сделать для того , чтобы утопить мяч в отверстие , чтобы закончить игру. В зависимости от того , насколько выше или ниже **номинальной** ваши **ходы,** есть другой ник.
Ваша функция будет передана параметрам **par** и **strokes** . Вы должны вернуть правильную строку в соответствии с этой таблицей, которая отображает штрихи в порядке приоритета; верхняя (самая высокая) до нижней (самая низкая):
Штрихи | Вернуть
: --------- | : -------------
1 | "Отверстие в одном!"
<= par - 2 | «Орел»
par - 1 | "Птичка"
par | «Пар»
par + 1 | «Пугало»
par + 2 | "Двойной Богей" > = par + 3 | "Иди домой!"
**par** и **штрихи** всегда будут числовыми и положительными.
* Измените код ниже `// Only change code below this line` и выше `// Only change code above this line` .
* Убедитесь, что вы редактируете внутреннюю часть функции `golfScore` .
* Вам нужно будет заставить функцию возвращать точно такую ​​же строку, как показано в таблице, в зависимости от значения параметров **par** и **штрихов** , передаваемых вашей функции.
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 1
`+number -number` можно использовать для увеличения или уменьшения параметра в вашем состоянии.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 2
Вы используете `if / else if` цепочки возвращают разные значения в разных сценариях.
> _попытаться решить проблему сейчас_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 ": Speech_balloon:") Подсказка: 3
Управляйте потоком вашей функции на основе таблиц порядка приоритета - верхний (самый высокий) до нижнего (самый низкий), чтобы возвращать соответствующие строковые значения.
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
![предупреждающий знак](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**Решение впереди!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ": Начинающий:") Решение базового кода:
```
function golfScore(par, strokes) {
// Only change code below this line
if (strokes == 1){
return "Hole-in-one!";
} else if (strokes <= par -2){
return "Eagle";
} else if (strokes == par -1) {
return "Birdie";
} else if (strokes == par) {
return "Par";
} else if (strokes == par +1) {
return "Bogey";
} else if (strokes == par +2) {
return "Double Bogey";
} else {
return "Go Home!";
}
// Only change code above this line
}
// Change these values to test
golfScore(5, 4);
```
### Код Объяснение:
* Сравните параметры **par** и **stroke,** чтобы вернуть соответствующие строковые значения.
* `if / else if` цепочка используется для управления потоком.
* Строка «Иди домой!» возвращается для каждого условия, когда **штрихи** больше или равны **par + 3** .
## Альтернативное решение для кода:
```javascript
var names = ["Hole-in-one!", "Eagle", "Birdie", "Par", "Bogey", "Double Bogey", "Go Home!"];
function golfScore(par, strokes) {
// Only change code below this line
if (strokes == 1){
return names[0];
}
else if (strokes <= par-2){
return names[1];
}
else if (strokes == par -1){
return names[2];
}
else if (strokes == par){
return names[3];
}
else if (strokes == par +1){
return names[4];
}
else if (strokes == par +2){
return names[5];
}
else {return names[6];}
// Only change code above this line
}
// Change these values to test
golfScore(5, 4);
```
· Запустить на [repl.it](https://repl.it/@AdrianSkar/Basic-JS-Golf-code)
\## Обозначение кода Поскольку у нас уже есть массив, определенный в `names` переменных, мы можем воспользоваться им и использовать его для наших операторов return, используя индексы (например: `names[0] is the first one` ). Таким образом, если вам когда-либо понадобится изменить определенный результат, вам не нужно будет искать его внутри функции, это будет в начале в вашем массиве.
### Ресурсы
* [Гольф](https://en.wikipedia.org/wiki/Golf)
* [Задача: цепочка в случае других утверждений](http://www.freecodecamp.com/challenges/chaining-if-else-statements)
* [Задача: сравнение с тем, что больше, чем оператору](http://www.freecodecamp.com/challenges/comparison-with-the-greater-than-equal-to-operator)
* [Задача: сравнение с меньшим, чем равным оператору](http://www.freecodecamp.com/challenges/comparison-with-the-less-than-equal-to-operator)
* [«Массив» - _ссылка MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array)

View File

@@ -0,0 +1,13 @@
---
title: Increment a Number with JavaScript
localeTitle: Увеличение номера с помощью JavaScript
---
## Увеличение номера с помощью JavaScript
Вы можете легко увеличивать (добавлять) числовую переменную с помощью оператора приращения «++». Например:
```
var a = 6;
a++; // Now, 'a' is equal to 7 -- post-fixing
++a; // Now, 'a' is equal to 8 -- pre-fixing
```

View File

@@ -0,0 +1,11 @@
---
title: Basic Javascript
localeTitle: Основной Javascript
---
## Основной Javascript
Это заглушка. [Помогите нашему сообществу расширить его](https://github.com/freecodecamp/guides/tree/master/src/pages/mathematics/quadratic-equations/index.md) .
[Это руководство по быстрому стилю поможет вам принять ваш запрос на тягу](https://github.com/freecodecamp/guides/blob/master/README.md) .
#### Дополнительная информация:

View File

@@ -0,0 +1,11 @@
---
title: Initializing Variables with the Assignment Operator
localeTitle: Инициализация переменных с помощью оператора присваивания
---
## Инициализация переменных с помощью оператора присваивания
Для **инициализации** переменной нужно указать начальное значение. Вы можете объявить и инициализировать переменную следующим образом:
```
var num = 5; // This is equal to 5
```

View File

@@ -0,0 +1,63 @@
---
title: Introducing Else If statements
localeTitle: Представляем инструкции Else If
---
## Представляем инструкции Else If
Не забудьте использовать Read-Search-Ask, если вы застряли. Попробуйте подключить программу и написать собственный код.
\### Объяснение проблемы:
```javascript
function testElseIf(val) {
if (val > 10) {
return "Greater than 10";
}
if (val < 5) {
return "Smaller than 5";
}
return "Between 5 and 10";
}
// Change this value to test
testElseIf(7);
```
Мы будем модифицировать существующий код выше, чтобы он следовал потоку логики, который имеет оператор **else-if** .
\### Совет: 1 `javascript if (val > 10) { return "Greater than 10"; }` Все утверждения `if` и их варианты начинаются с утверждения `if` .
> _попытаться решить проблему сейчас_
\### Подсказка: 2 `javascript else if (val < 5) { return "Smaller than 5"; }` Заявления между , `if` заявление и `else` заявление в **еще, если** поток находится в другой, если формат
> _попытаться решить проблему сейчас_
\### Подсказка: 3 `javascript else { return "Between 5 and 10"; }` Последний оператор в потоке **else-if** находится в `else` формате ### Осторожно, спойлеры! ![спойлер](http://discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif) Решение впереди! ## Базовое решение:
```javascript
function testElseIf(val) {
if (val > 10) {
return "Greater than 10";
}
else if (val < 5) {
return "Smaller than 5";
}
else {
return "Between 5 and 10";
}
}
// Change this value to test
testElseIf(7);
```
: ракета: [код запуска](https://repl.it/@RyanPisuena/GoldenWorriedRuntime) ## Обозначение кода Структура **логического потока else-if** является исходным оператором `if` , еще одним оператором `if-else` и одним заключительным заявлением `else` .
### Ресурсы
* ["if ... else" - _ссылка MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if…else)

View File

@@ -0,0 +1,58 @@
---
title: Introducing Else statements
localeTitle: Представляем инструкции Else
---
## Представляем инструкции Else
### Объяснение проблемы:
_Объединение операторов `if` в один оператор `if/else` ._
#### Подсказка 1
Когда первый оператор `if` возвращает `false` выполняется и обрабатывается следующий фрагмент кода (например, `return` , `if` или `else` ).
> _попытаться решить проблему сейчас_
#### Подсказка 2
Иногда, `if` ( `condition` ) операторы могут быть заменены операциями `else {code to execute instead}` (по сути, вы говорите своей функции _«y»,_ если она не может выполнить _«x»,_ а не указывать _«x»_ несколько раз).
> _попытаться решить проблему сейчас_
## Осторожно, спойлеры!
**Решение впереди!**
## Базовое решение:
```javascript
function testElse(val) {
var result = "";
// Only change code below this line
if (val > 5) {
result = "Bigger than 5";
}
else {
result = "5 or smaller";
}
// Only change code above this line
return result;
}
// Change this value to test
testElse(4);
```
· [Запустить код в repl.it](https://repl.it/@AdrianSkar/Introducing-else-statements)
### Обозначение кода
Функция сначала оценивает, `if` условие `val > 5` значение `true` . Если это не так, выполняется следующий оператор ( `else { return "5 or smaller";})` .
### Ресурсы
* ["if ... else" - _ссылка MDN JavaScript_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if…else)

View File

@@ -0,0 +1,38 @@
---
title: Iterate Odd Numbers With a For Loop
localeTitle: Итерировать нечетные числа с помощью цикла
---
## Итерировать нечетные числа с помощью цикла
Вот пример:
```javascript
var ourArray = [];
for (var i = 0; i < 10; i += 2) {
ourArray.push(i);
}
// Setup
var myArray = [];
// Only change code below this line.
```
Вот решение: После строки `// Only change code below this line.` мы добавляем `for` цикла. Вам нужно скопировать петлю сверху:
`javascript for (var i = 0; i < 10; i += 2) { ourArray.push(i); }` И измените `initialization` `var i = 0` на `var i = 1` , также вам нужно изменить имя массива `ourArray` на `myArray` :
`javascript for (var i = 1; i < 10; i += 2) { myArray.push(i); }`
Вот полное решение:
\`\` \`Javascript var ourArray = \[\];
для (var i = 0; i <10; i + = 2) { ourArray.push (я); }
// Настроить var myArray = \[\];
// Изменить код ниже этой строки.
для (var i = 1; i <10; i + = 2) { myArray.push (я); } \`\` \`

View File

@@ -0,0 +1,9 @@
---
title: Iterate Through an Array with a For Loop
localeTitle: Итерация через массив с петлей
---
## Итерация через массив с петлей
Это заглушка. [Помогите нашему сообществу расширить его](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/iterate-through-an-array-with-a-for-loop/index.md) .
[Это руководство по быстрому стилю поможет вам принять ваш запрос на тягу](https://github.com/freecodecamp/guides/blob/master/README.md) .

View File

@@ -0,0 +1,20 @@
---
title: Iterate with JavaScript Do...While Loops
localeTitle: Итерация с помощью JavaScript Do ... While Loops
---
## Итерация с помощью JavaScript Do ... While Loops
* `Do...While` циклы убеждаются, что код выполняется хотя бы один раз, и после выполнения, если условие внутри `while()` равно **true** , оно продолжается с циклом, в противном случае оно останавливается.
## Решение
```javascript
var myArray = [];
var i = 10;
do {
myArray.push(i);
i++;
} while(i <= 10);
```

View File

@@ -0,0 +1,9 @@
---
title: Iterate with JavaScript For Loops
localeTitle: Итерация с JavaScript для циклов
---
## Итерация с JavaScript для циклов
Это заглушка. [Помогите нашему сообществу расширить его](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/iterate-with-javascript-for-loops/index.md) .
[Это руководство по быстрому стилю поможет вам принять ваш запрос на тягу](https://github.com/freecodecamp/guides/blob/master/README.md) .

View File

@@ -0,0 +1,40 @@
---
title: Iterate with JavaScript While Loops
localeTitle: Итерации с помощью JavaScript, в то время как циклы
---
## Итерации с помощью JavaScript, в то время как циклы
Хотя циклы будут работать, пока условие внутри () истинно. Пример:
```javascript
while(condition){
code...
}
```
## Подсказка 1:
Используйте переменную итератора, такую ​​как i в вашем состоянии
```javascript
var i = 0;
while(i <= 4){
}
```
## Spoiler Alert Solution Ahead!
## Решение:
```javascript
// Setup
var myArray = [];
// Only change code below this line.
var i = 0;
while (i <= 4){
myArray.push(i);
i++;
}
```

View File

@@ -0,0 +1,19 @@
---
title: Local Scope and Functions
localeTitle: Локальная область и функции
---
## Локальная область и функции
Локальная область означает, что переменная доступна в определенной области. В случае этого упражнения `myVar` доступен только внутри функции, а не где-либо снаружи.
Вот базовое решение для создания локальной переменной `myVar` .
```javascript
function myLocalScope() {
var myVar;
console.log(myVar);
}
myLocalScope();
```
Переменная существует только в функции. Вне функции она не существует.

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