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: 嘘谁
---
![](//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语句或只返回用于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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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`空数组,我们最终会返回它们。
* 我们的**for循环**循环直到`a`等于或大于我们测试中数组的长度。
* 在我们的循环中,我们使用`temp.push(arr[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` ,我们将存储'chunk'。
* for循环从零开始每次循环都按`size`递增,并在达到`arr.length`时停止。
* 请注意此for循环不会循环遍历`arr` 。相反,我们使用循环生成数字,我们可以将其用作索引,以在正确的位置切割数组。
* 在我们的循环中,我们使用`arr.slice(i, i+size)`创建每个块,并使用`arr2.push()`将此值添加到`arr2`
* 最后,我们返回`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`等于或大于我们测试中数组的长度。
* 在我们的循环中,我们使用`arr.slice(i, i+size)`推送到`newArr`数组。它第一次循环,它看起来像:
newArr.pusharr.slice1,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。
* 在我们的循环中,我们使用`arr.splice(0, size)`推送到`newArr`数组。
* 对于`while`循环的每次迭代,它会从`arr`前面删除元素的`size`数量,并将它们作为数组推送到`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)
### 代码说明:
* 嵌套返回小于size的数组。
* 对于任何大于大小的数组,它都被分成两部分。第一个段嵌套并与第二个第二段连接,进行递归调用。
#### 相关链接
* [递归](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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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`
您将获得一个可变**摄氏度,**表示摄氏温度。使用已定义的变量**fahrenheit**并应用算法为其分配相应的华氏温度。
#### 相关链接
* [运营秩序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);
```
### 代码说明:
* 声明**fahrenheit**变量。
* 在需要时,确保使用括号( `()` )遵循正确的算术运算顺序。
## ![: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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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`开始很容易`0! = 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 **不** ---> Oki doki让我们继续......
**返回:**
**5** __第二次执行\_ **4** \_ _第三次执行_ **3次** __第四次执行 **2** _次第五次执行_ **1次**
它返回的内容可以被视为`(5*(4*(3*(2*1))))`或只是`5 * 4 * 3 * 2 * 1` ,该函数将返回该操作的结果: `120` 。现在,让我们检查其余的执行操作:
### 在其余的执行期间:
**第二次执行** _num_ = 5-1 = **4** - >是_num_ 0还是1没有
\- >当_num_现在是4-1时返回4和下一个结果之间的乘法。
**第三次执行** _num_ = 4 - 1 = **3** - >是_num_ 0还是1没有
\- >当_num_现在为3-1时返回3和下一个结果之间的乘法。
**第四次执行** _num_ = 3-1 = **2** - >是_num_ 0还是1没有
\- >当_num_现在为2-1时返回2和下一个结果之间的乘法。
**第五次执行** _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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

View File

@@ -0,0 +1,73 @@
---
title: Falsy Bouncer
localeTitle: Falsy Bouncer
---
![](//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
Falsy是评估为FALSE的东西。 JavaScript中只有六个假值undefinednullNaN0“”空字符串当然还有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
然后我们需要添加一个带有falsy值函数的`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`用于[truthy](http://forum.freecodecamp.com/t/javascript-truthy-value/15975)值或`false`用于[falsy](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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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 Reduce](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`只有1个元素那么这是最长的元素我们返回它。如果第一个元素的长度大于第二个元素的长度或等于我们删除第二个元素并递归调用函数`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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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`变量被传递给函数,因此我们将它设置为数组中的每个索引。
* 预定义的函数已经为我们检查了每个数字所以如果它是“true”我们将返回该数字。
* 如果数组中没有数字通过函数的测试我们返回undefined。

View File

@@ -0,0 +1,11 @@
---
title: Basic Algorithm Scripting
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,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`来做。如果缺少当前`letter` `indexOf`将给出-1。我们检查不是这种情况因为如果这种情况发生即使`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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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")问题说明:
该程序非常简单,我们必须采用一个变量并返回该变量重复一定次数。无需添加空格或任何内容,只需将其重复一个单独的字符串即可。
#### 相关链接
* [全局字符串对象](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)
### 代码说明:
* 创建一个空字符串变量来存储重复的单词。
* 根据`num`使用while循环或for循环根据需要多次重复代码
* 然后我们只需要将字符串添加到在第一步中创建的变量,并根据设置循环的方式增加或减少`num`
* 在循环结束时,返回重复单词的变量。
#### 相关链接
* JS while Loop
* [JS for Loops解释](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三元](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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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()`将其内容减少到单个值
* 传递给reduce方法的回调函数采用先前的值和当前值并比较这两个值
* 如果当前值高于前一个值我们将其设置为新的先前值以便与数组中的下一个项目进行比较或者如果它是最后一项则将其返回到map方法回调
#### 相关链接
* [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)
* [DevDocs上的Function.prototype.apply](http://devdocs.io/#q=js+Function+apply)
* [DevDocs上的Function.bind](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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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")问题说明:
我们需要取出字符串并将其反转,所以如果它最初读为'hello',它现在将读为'olleh'。我们需要拆分字符串因此我们也将使用Arrays。
#### 相关链接
* [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('')`字符串。请注意,我们不会在单引号之间留下任何内容,这会告诉函数按字符分割字符串。
* 使用`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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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`获取所有元素,并从索引位置`n`开始将它们插入到`arr2` 。同时我们必须确保`arr``arr2`都没有变异。
* 使用`slice()`函数,我们可以创建`arr2`的精确副本,并将操作的结果分配给变量`localArray`
* 现在我们有了一个可以变异的数组,我们可以迭代第一个数组中的每个项目。对于第一个数组中的每个项目,我们可以使用`splice()`函数将项目插入`localArray`索引`n`中。
* 我们将索引`n`递增1。这将确保`arr1`中的每个项都插入到正确索引位置的`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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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")问题说明:
我们必须返回一个带有标题案例的句子。这意味着第一个字母将始终为大写,其余字母将为小写。
#### 相关链接
* [全局字符串对象](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
* 在将第一个字母设为大写之前,您应该将单词设为小写。
* 对每个单词使用replace方法来大写每个单词的第一个字母。
> _现在尝试解决问题_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示3
* 您需要创建一个包含前一个片段的新字符串,最后再将所有内容合并为一个字符串。
* 在replace方法中使用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 for Loops解释](http://forum.freecodecamp.com/t/javascript-for-loop/14666s-Explained)
* [JS String Prototype Split](http://forum.freecodecamp.com/t/javascript-string-prototype-split/15944)
* [JS String Prototype Substr](http://forum.freecodecamp.com/t/javascript-string-prototype-substr/15945)
* [JS Array Prototype Join](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)
### 代码说明:
我们将整个字符串设为小写然后将其转换为数组。然后我们使用map函数用大写字母替换小写字符。最后我们使用`join`方法返回字符串。
#### 相关链接
* [JS阵列原型图](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()`小写整个字符串。
* 使用`.replace`将每个单词'first first'替换为大写。
* 在每个单词的开头搜索字符,即匹配`space`后面的任何字符或匹配整个字符串的第一个字符,使用以下模式。
* 正则表达式解释:
* 查找所有非空白字符`(\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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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语句来测试作为第一个参数传入的完整字符串的长度是否已经作为第二个参数传入的大小限制。如果是这样我们可以返回传入的字符串。
ifstr.length <= num 返回str;
* 如果上面的`if`语句失败,我们将移动到`else` ,我们将返回字符串的“切片”。 slice方法提取字符串的一部分并返回一个新字符串。这里我们传递0作为切片的起点。要确定端点我们使用三元运算符 `num > 3 ? num - 3 : num` 。在我们的三元组中,如果`num`大于3我们必须将三个点分解为我们的总长度因此我们将切片结束于`num-3` 。如果num小于或等于3则我们的切片得到一个只有`num`的结束变量。最后, `'...'`被附加到我们新字符串的末尾并被返回。
} else { return str.slice0num> 3num - 3num+'...'; }
* **注意**为了理解上述代码,您需要了解三元运算符的工作原理。三元运算符经常用作`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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

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数组排序](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输入数组进行排序
* 每当num输入大于arr输入数时我都会运行for循环计数。
* 这个数字相当于num在排序数组中的位置。
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":初学者:")基本代码解决方案
[@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_是否更大时迭代数组。
* 当_num_不大于_i_并且返回最后检查的元素时循环将停止。
## ![:sunflower:](https://forum.freecodecamp.com/images/emoji/emoji_one/sunflower.png?v=3 ":向日葵:")中级代码解决方案:
通过[@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)
## 代码说明:
* 首先,我们使用`push()`将数字`num`添加到数组中, `push()`其添加为数组的最后一个元素。
* 然后我们使用`sort()`和回调函数`function(a, b){return ab}`来按升序对数字进行排序。
* 最后,我们使用`indexOf()`函数`indexOf()`数组中`num`的位置或索引。
#### 相关链接
* [推()](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时对于这种情况这意味着`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")高级代码解决方案
通过[@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.concatnum方法合并`arr``num`
* 然后我们使用带有回调**箭头函数的** `sort()` `(a, b) => return ab`来按升序对数字进行排序
* 最后,我们使用`indexOf()`方法`indexOf()`数组中`num`的位置或索引
#### 相关链接
* [用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 ":警告:") **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它**_相似但更好_** ,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - **基本** **中级**和**高级** 。 ![: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)供参考。

View File

@@ -0,0 +1,69 @@
---
title: Iterate Through the Keys of an Object with a for...in Statement
localeTitle:  使用for ... in Statement中的对象键迭代
---
## 使用for ... in Statement中的对象键迭代
方法:
* 注意: `dot-notation`会导致此挑战出错。
* 必须使用`[square-bracket]`表示法来调用变量属性名称。
* 以下代码无效。
### 例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: 使用括号表示法访问属性名称
---
## 使用括号表示法访问属性名称
方法:
* 使用括号表示法只需在`checkInventory()`函数中编写return语句。
* 以下代码块演示了所需的语法。
## 例:
```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}
```
* 上面的代码将在对象中创建一个ney `key-value`
## 解
```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)`解决问题`? : (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`来检查对象是否包含所有用户然后返回true或false语句。第一个解决方案就是这样做的。
* 第二个解决方案以完全相同的方式工作只有它在函数内使用1行代码 - `Conditional(ternary)-Operator` - `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: 将数组与Spread运算符组合在一起
---
## 将数组与Spread运算符组合在一起
* 解决方案与给出的示例完全相同。只需将`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: 使用Spread Operator复制数组
---
## 使用Spread Operator复制数组
* 示例中的最后一个提示告诉您使用最近学习的方法。
* spread运算符将所有元素复制到一个新的空对象中。
\`\`\`的JavaScript whilenum> = 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 copyMachinearrnum{ 让newArr = \[\]; whilenum> = 1{ //更改此行下方的代码 newArr.push\[... ARR\]; //更改此行以上的代码 num--; } 返回newArr; }
//在此处更改代码以测试不同的情况: console.logcopyMachine\[truefalsetrue\]2; \`\`\`

View File

@@ -0,0 +1,30 @@
---
title: Copy Array Items Using slice()
localeTitle: 使用slice复制数组项
---
## 使用slice复制数组项
* `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: 使用for循环遍历所有数组的项目
---
## 使用for循环遍历所有数组的项目
## 提示1
* 必须使用嵌套的`for`循环来搜索数组中的每个元素。
```javascript
for (let i = 0; i < arr.length; i++) {
```
\`
## 提示2
* 然后必须将数组的每个元素与通过`filteredArray()`函数传递的`elem`参数进行比较。
```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`的数组中。第二行将返回修改后的数组。
* 请记住,必须使用`addFriend()`函数的第一个参数引用`user`
### 解:
```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从数组中删除项
* 必须使用`popped``shifted`变量调用和初始化`.pop()`方法和`.shift()`方法,以从函数返回正确的答案。
## 解:
```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删除项目
* 必须在`arr`数组上调用`splice()`函数以便从数组的中心删除1个或多个元素。
* 数组`arr`目前的`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中Arrays是最常用的数据结构之一。与其他语言不同JS中的数组可以存储不同的数据类型也可以在运行时更改它们的大小因此也称为“动态数组”。它们也被编入索引。
* 数组可以用不同的方式初始化:
1. 数组文字
2. 数组构造函数
* 在这个挑战中,我们将专注于数组文字。要初始化一个数组,我们只需`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)提供了有关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'
```
在这个例子中,我们最喜欢的水果是'orange',它位于`fruitBasket`数组的索引`2` 。使用braket表示法我们将`fruitBasket`数组的索引`2`分配给`favoriteFruit` 。这使得`favoriteFruit`等于'orange'。
### 使用braket `[]`和dot访问数组中的对象`.`符号
```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`访问该属性。 如果你遇到困难,请看上面的线索。

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: 使用点表示法访问对象属性
---
## 使用点表示法访问对象属性
这是一个可能的解决方案:
```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: 在交换机语句中添加默认选项
---
# 在交换机语句中添加默认选项
* 添加默认选项可确保在您的变量与任何选项都不匹配的情况下,将使用默认选项。
## 解:
```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语句中的第一个条件条件为_true的_情况下执行代码并忽略其余的。
* `Else if` :永远不能用作第一个条件。它始终是一个条件后`if` ,情况条件为真,执行代码。否则跳进下一个条件。
* `Else` 所有先前的条件都是_假的_ **否则**执行。
### 问题解释:
_写入链接`if` / `else if`语句以满足以下条件_
_`num < 5` - 返回“Tiny” `num < 10` - 返回“Small” `num < 15` - 返回“中” `num < 20` - 返回“Large” `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: 评论您的JavaScript代码
---
## 评论您的JavaScript代码
通过注释,您可以键入不希望计算机作为代码运行的内容。例如,其他程序员的注释,方向等。以下是如何创建单行注释。
```
// 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时函数将返回“Equal”。_
#### 提示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` 。如果是则返回大括号之间的语句“Equal”。如果没有则返回它们之外的下一个`return`语句“Not equal”
### 来源
1 。 [“基本JavaScript与平等运算符的比较”JCC _算法和数据结构认证的_ fCC课程](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator)
### 资源
* [“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: 与大于运营商的比较
---
## 与大于运营商的比较
`>` 大于是一个逻辑运算符它返回true左边的值高于右边的值。
## 基本解决方案
```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: 与大于或等于运算符的比较
---
## 与大于或等于运算符的比较
* `>=` 大于或等于是一个逻辑运算符它返回true左边的值与右边的值**相同或更高** 。
## 基本解决方案
```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: 与不等式算子的比较
---
## 与不等式算子的比较
* `!=` 不等式是一个逻辑运算符它返回true左边的值与右边的值不同。
* 不等式运算符认为`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: 与小于算子的比较
---
## 与小于算子的比较
**`<`** Less Than是一个逻辑运算符它返回true左边的值低于右边的值。
## 基本解决方案
```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: 与小于或等于运算符的比较
---
## 与小于或等于运算符的比较
**`<=`** 小于或等于是一个逻辑运算符它返回true左边的值与右边的值**相同或者更低** 。
## 基本解决方案
```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`语句中使用strict equality运算符因此当`val`严格等于`7`时函数将返回“Equal”。_
#### 提示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` 。如果是则返回大括号之间的语句“Equal”。如果没有则返回它们之外的下一个`return`语句“Not equal”
### 来源
1 。 [“基本JavaScript与平等运算符的比较”JCC _算法和数据结构认证的_ fCC课程](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-equality-operator)
2 。 [“基本JavaScript与严格平等运算符的比较”JCC _算法和数据结构认证的_ fCC课程](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强制”。 _Hackernoon_](https://hackernoon.com/understanding-js-coercion-ff5684475bfc) 2018年9月15日访问
* [“比较运算符” - _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`时函数将返回“Not Equal”。_
#### 提示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`语句“Equal”
### 资源
* [“非身份/严格不平等(!==)” - _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语句合并为一个语句如果`val`小于或等于`50`且大于或等于`25` ,则返回`"Yes"` 。否则,将返回`"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"`语句。
### 资源
* [“逻辑运算符” - _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";
}
```
仅当`val`介于10和20之间时上述代码才会返回“Outside”。

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: 用For循环向后计数
---
## 用For循环向后计数
这是一个例子:
```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
* 为myArray创建一个新的for循环
#### 提示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或更大则返回**#Hold** 。
* 如果最终计数为0或更少则返回**#Bet** 。
**示例输出:**
* \-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`语句检查**计数值** 。另外,请确保您的`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`语句检查每张卡的值。
* 变量**计数**
* 如果卡是2,3,4,5或6则增加1。
* 由于7,8和9不值得我们在`switch`语句中忽略了这些卡。
* 如果卡是10'J''Q''K'或'A'则减1。
* 检查**count**的值并返回相应的响应。
**示例运行**
* `cc(2);`运行。
* `switch`语句命中`case 2` ,跳转并将变量`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`或更高的IT递减`count`由一个。 ·变量`regex`是表示较高卡的值(字母)的[正则表达式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp) 。 · `else`语句使用`|| (logical OR)`检查这些值`|| (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)
* [挑战:使用切换语句从多个选项中进行选择](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引入了另外两种声明变量的方法。 **让**和**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运算符存储值一样所有函数调用将在返回执行之前解析因此我们可以返回`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` 并在你的范围内返回一个随机数。_
如果您只是在`randomRange`公式中重复使用函数`ourRandomRange`则无法通过最终测试。您需要编写自己的公式,使用变量`myMax``myMin` 。它将使用`ourRandomRange`执行相同的工作,但确保您已了解`Math.floor()``Math.random()`函数的原理。

View File

@@ -0,0 +1,62 @@
---
title: Global Scope and Functions
localeTitle: 全球范围和职能
---
## 全球范围和职能
变量的范围是它的可见性;代码中的哪个部分是可用的功能?以下是变量可以具有的不同范围的列表。
* **全局范围** :该变量在整个代码中可用
* **本地范围** :仅在某个区域可用(仅在功能内)
* **块范围** 在_更_确定的区域内可用如if语句
您的任务是了解如何在变量名称之前添加`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`变量其中包含“T-shirt”值。您现在应该创建另一个名为`outerWear`变量,但这次是在函数`myOutfit()` 。基本代码解决方案如下:
```javascript
var outerWear = "T-shirt";
function myOutfit() {
var outerWear = "sweater";
return outerWear;
}
myOutfit();
```
该函数将返回它可以找到的最近的`outerWear` 。由于我们在函数内部创建了一个`outerWear` ,即'最接近'因此该函数将返回“sweater”。

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**和**stroke**参数。您必须根据此表返回正确的字符串,该表按优先级顺序列出笔划;顶部(最高)到底部(最低):
笔画|返回
--------- | -------------
1 | “一杆进洞!”
<= par - 2 | “鹰”
par - 1 | “小鸟”
帕尔| “相提并论”
par + 1 | “柏忌”
par + 2 | “双柏忌” > = par + 3 | “回家!”
**标准杆**和**笔画**将始终为数字和正数。
* 更改下面的代码`// Only change code below this line`以上的代码`// 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` chains在不同的场景中返回不同的值。
> _现在尝试解决问题_
## ![: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` chain用于流量控制。
* 字符串“回家!”对于**笔划**大于或等于**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`定义了一个数组,我们可以利用它并将它用于使用索引的返回语句(例如: `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)
* [“Array” - _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`报表的**其他,如果**流是在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);
```
rocket [运行代码](https://repl.it/@RyanPisuena/GoldenWorriedRuntime) ##代码说明 **else-if逻辑流**的结构是一个初始`if`语句,一个`if-else`语句和一个final `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}`语句`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: 使用For循环迭代奇数
---
## 使用For循环迭代奇数
这是一个例子:
```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 = \[\];
forvar i = 0; i <10; i + = 2{ ourArray.push; }
// 建立 var myArray = \[\];
//只更改此行下方的代码
forvar i = 1; i <10; i + = 2{ myArray.push; } \`\`\`

View File

@@ -0,0 +1,9 @@
---
title: Iterate Through an Array with a For Loop
localeTitle: 使用For循环遍历数组
---
## 使用For循环遍历数组
这是一个存根。 [帮助我们的社区扩展它](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迭代...循环
---
## 使用JavaScript迭代...循环
* `Do...While`循环确保代码至少执行一次,并且在执行之后,如果`while()`内的条件为**真** ,则继续循环,否则停止。
## 解
```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提醒解决方案
## 解:
```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