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,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();
```
该变量仅存在于函数中。在函数之外,它是不存在的。

View File

@@ -0,0 +1,9 @@
---
title: Logical Order in If Else Statements
localeTitle: 如果其他陈述中的逻辑顺序
---
## 如果其他陈述中的逻辑顺序
这是一个存根。 [帮助我们的社区扩展它](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements/index.md) 。
[这种快速风格指南有助于确保您的拉取请求被接受](https://github.com/freecodecamp/guides/blob/master/README.md) 。

View File

@@ -0,0 +1,25 @@
---
title: Manipulate Arrays With pop()
localeTitle: 使用pop操作数组
---
## 使用pop操作数组
## 问题解释
摆脱数组中的最后一个元素。然后,将该骑行元素分配给`removedFromMyArray`
## 提示1
在数组上调用`.pop()` ,并将其分配给`removedFromMyArray`
## 扰流板!代码解决方案
```javascript
var removedFromMyArray = myArray.pop();
=======
Remove the last element of an array with the pop() method, like so:
```
JavaScript的 var arr = \[1,2,3,4,5\]; arr.pop; //这摆脱了5
\`\`\`

View File

@@ -0,0 +1,13 @@
---
title: Manipulate Arrays With push()
localeTitle: 用push操纵数组
---
## 用push操纵数组
`push()`方法允许您将元素追加(添加到末尾)到数组。像这样......
```javascript
var arr = [1, 2, 3, 4];
arr.push(5); // Now, the array is [1, 2, 3, 4, 5]
```

View File

@@ -0,0 +1,13 @@
---
title: Manipulate Arrays With shift()
localeTitle: 使用shift操纵数组
---
## 使用shift操纵数组
虽然`pop()`用于删除数组的最后一个元素,但`shift()`用于删除第一个元素。这就像你将元素向下移动一个位置。看一下这个:
```javascript
var arr = [1, 2, 3, 4, 5];
arr.shift(); // Gets rid of the 1
```

View File

@@ -0,0 +1,13 @@
---
title: Manipulate Arrays With unshift()
localeTitle: 使用unshift操作数组
---
## 使用unshift操作数组
`push()`向元素的后面添加元素时, `unshift()`会将它们添加到前面。你所要做的就是:
```javascript
var arr = [2, 3, 4, 5];
arr.unshift(1); // Now, the array has 1 in the front
```

View File

@@ -0,0 +1,70 @@
---
title: Manipulating Complex Objects
localeTitle: 操纵复杂对象
---
## 操纵复杂对象
这是一个例子:
```javascript
var myMusic = [
{
"artist": "Billy Joel",
"title": "Piano Man",
"release_year": 1973,
"formats": [
"CD",
"8T",
"LP"
],
"gold": true
}
// Add record here
];
```
这是一个解决方案: 字符串`// Add record here`我们将新专辑添加到`myMusic` 。你需要从`,`开始。你可以复制已经创建的相册: `javascript { "artist": "Billy Joel", "title": "Piano Man", "release_year": 1973, "formats": [ "CD", "8T", "LP" ], "gold": true }`
粘贴后`,`
```javascript
// Add record here
,
{
"artist": "Billy Joel",
"title": "Piano Man",
"release_year": 1973,
"formats": [
"CD",
"8T",
"LP"
],
"gold": true
}
];
```
现在,您可以更改相册的值:
```javascript
// Add record here
,
{
"artist": "Deep Purple",
"title": "Smoke on the water",
"release_year": 1976,
"formats": [
"CD",
"8T",
"LP"
],
"gold": true
}
];
```
这是一个完整的解决方案:
\`\`\`的JavaScript var myMusic = \[ { “艺术家”:“比利乔尔”, “头衔”:“钢琴侠”, “发布_年份”1973年 “格式”:\[ “光盘”, “8T” “LP” \] “黄金”:是的 } //在这里添加记录 { “艺术家”:“深紫色”, “标题”:“在水面上冒烟”, “发行_年份”1976年 “格式”:\[ “光盘”, “8T” “LP” \] } \]。
\`\`\`

View File

@@ -0,0 +1,16 @@
---
title: Modify Array Data With Indexes
localeTitle: 使用索引修改数组数据
---
## 使用索引修改数组数据
访问数组的位置,并更改它,如下所示:
```javascript
var arr = [1, 2, 3, 4, 5];
arr[0] = 6; // Now, the array is [6, 2, 3, 4, 5]
arr[4] = 10 // Now, the array is [6, 2, 3, 4, 10]
```
这里重要的概念是数组是**可变的** 。这意味着它们可以轻松更改。

View File

@@ -0,0 +1,96 @@
---
title: Multiple Identical Options in Switch Statements
localeTitle: 交换机语句中的多个相同选项
---
## 交换机语句中的多个相同选项
### 问题解释
_如果从switch语句的大小写中省略了break语句则会执行以下case语句直到遇到break。如果您有多个具有相同输出的输入则可以在switch语句中表示它们如下所示_
```javascript
switch(val) {
case 1:
case 2:
case 3:
result = "1, 2, or 3";
break;
case 4:
result = "4 alone";
}
```
_1,2和3的情况都会产生相同的结果。_
_写一个switch语句来设置以下范围的答案_ `1-3` - “低”
`4-6` - “中”
`7-9` - “高”
_注意 您需要为范围中的每个数字都有一个case语句。_
## 扰流板警报!
**提前解决!**
## 代码解决方案
```javascript
function sequentialSizes(val) {
var answer = "";
// Only change code below this line
switch(val) {
case 1:
case 2:
case 3:
return "Low";
break;
case 4:
case 5:
case 6:
return "Mid";
break;
case 7:
case 8:
case 9:
return "High";
break;
}
// Only change code above this line
return answer;
}
// Change this value to test
sequentialSizes(1);
```
## 替代代码解决方案
```javascript
function sequentialSizes(val) {
var answer = "";
// Only change code below this line
switch(val){
case 1: case 2: case 3:
answer = "Low";
break;
case 4: case 5: case 6:
answer = "Mid";
break;
case 7: case 8: case 9:
answer = "High";
}
// Only change code above this line
return answer;
}
// Change this value to test
sequentialSizes(1);
```
·在[repl.it上](https://repl.it/@AdrianSkar/Basic-JS-Multiple-opts-in-switch)运行代码。
### 代码说明
由于您已经定义了一个名为`answer`的变量并且函数返回它因此您可以在每组case语句中修改其值以满足练习要求。
### 资源
* [“切换:多标准案例的方法” - _MDN Javascript参考_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch)

View File

@@ -0,0 +1,9 @@
---
title: Multiply Two Decimals with JavaScript
localeTitle: 使用JavaScript乘以两个小数
---
## 使用JavaScript乘以两个小数
这是一个存根。 [帮助我们的社区扩展它](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/multiply-two-decimals-with-javascript/index.md) 。
[这种快速风格指南有助于确保您的拉取请求被接受](https://github.com/freecodecamp/guides/blob/master/README.md) 。

View File

@@ -0,0 +1,11 @@
---
title: Multiply Two Numbers with JavaScript
localeTitle: 使用JavaScript将两个数字相乘
---
# 使用JavaScript将两个数字相乘
JavaScript使用`*`符号进行乘法运算。
```
var product = 8 * 10; //product gets the value 80
```

View File

@@ -0,0 +1,13 @@
---
title: Nest one Array within Another Array
localeTitle: 将一个Array嵌套在另一个Array中
---
## 将一个Array嵌套在另一个Array中
数组是一维的;这意味着它们只存储一行数据。但是你可以通过在数组中放置数组来创建一个多维数组!像这样:
```javascript
var arr = [["Two-dimensional", 2], ["Two rows", 12]];
```
上面的数组有两个维度。

View File

@@ -0,0 +1,91 @@
---
title: Nesting For Loops
localeTitle: 嵌套循环
---
## 嵌套循环
**如果卡住请记得使用Read-Search-Ask。尝试配对程序半身像_在_剪影并编写自己的代码铅笔**
checkered\_flag **问题说明:**
如果您有一个多维数组,则可以使用与先前路点相同的逻辑来遍历数组和任何子数组。
这是一个例子:
```
var arr = [
[1,2], [3,4], [5,6]
];
for (var i=0; i < arr.length; i++) {
for (var j=0; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
```
这个输出在每个子元件`arr`一次一个。注意对于内部循环我们检查arr \[i\]的长度因为arr \[i\]本身就是一个数组。
* 修改函数`multiplyAll` ,使其乘以`product`变量乘以`arr`的子数组中的每个数字。
* 确保第二个for循环嵌套在第一个中。
**相关链接**
* [在另一个阵列中嵌套一个阵列](https://guide.freecodecamp.org/certifications/javascript-algorithms-and-data-structures/basic-javascript/nest-one-array-within-another-array)
* [使用For循环遍历数组](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/iterate-through-an-array-with-a-for-loop)
* [访问嵌套数组](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/accessing-nested-arrays)
speech\_balloon提示1
确保检查`length`而不是整个阵列。
_现在尝试解决问题_
speech\_balloon提示2
在乘以产品时同时使用`i``j`
_现在尝试解决问题_
speech\_balloon提示3
当您将子数组与`product`变量相乘时,请记住使用`arr[i]`
_现在尝试解决问题_
_扰流警报_ ![](https://discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**提前解决!**
:初学者: **基本代码解决方案:**
```
function multiplyAll(arr) {
var product = 1;
// Only change code below this line
for(var i=0; i < arr.length; i++){
for (var j=0; j < arr[i].length; j++){
product = product * arr[i][j];
}
}
// Only change code above this line
return product;
}
// Modify values below to test your code
multiplyAll([[1,2],[3,4],[5,6,7]]);
```
rocket **[运行代码](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/nesting-for-loops/)**
**代码说明:**
* 我们检查的长度`arr``i`的for循环和`arr[i]`在长度`j` for循环。
* 我们将`product`变量自身乘以因为它等于1然后将它乘以子数组。
* 要乘的两个子阵列是`arr[i]``j`
:剪贴板: **供稿说明:**
* :警告: **请勿**添加与任何现有解决方案类似的解决方案。如果您认为它相似但更好,那么尝试合并(或替换)现有的类似解决方案。
* 添加解决方案的说明。
* 将解决方案分为以下类别之一 - 基本,中级和高级。 :红绿灯:
* 如果您添加了任何相关的主要内容,请仅添加您的用户名。 (:警告: _**不要**_删除任何现有的用户名
请参阅point\_right [Wiki挑战解决方案模板](http://forum.freecodecamp.com/t/algorithm-article-template/14272)以供参考。

View File

@@ -0,0 +1,21 @@
---
title: Passing Values to Functions with Arguments
localeTitle: 将值传递给带参数的函数
---
## 将值传递给带参数的函数
我们的任务是创建一个具有**参数**的函数。这些是确定函数输出的输入。你将参数放在`()` ,如下所示:
```javascript
function functionWithArgs(one, two) {
console.log(one + two);
}
```
我们现在必须在括号内添加代码。我们的任务是添加`one``two` ,并将总和打印到控制台。这是基本的代码解决方案:
```javascript
functionWithArgs(7, 3);
//This will console log 10.
```

View File

@@ -0,0 +1,46 @@
---
title: Practice comparing different values
localeTitle: 练习比较不同的值
---
## 练习比较不同的值
### 问题解释:
· _修改函数使其仅在值**严格**相等时返回“Equal”。_
#### 提示1
请记住,在上一次练习中, _与等于运算符不同的是它尝试将两个值转换为常见类型而严格相等运算符不执行类型转换。_ [1](#cite1)
> _现在尝试解决问题_
## 扰流板警报!
**提前解决!**
## 基本代码解决方案
```javascript
// Setup
function compareEquality(a, b) {
if (a === b) { // Change this line
return "Equal";
}
return "Not Equal";
}
// Change this value to test
compareEquality(10, "10");
```
### 代码说明
功能首先评估`if`条件`(a === b)`的计算结果为`true`同时考虑类型和值。如果是则返回大括号之间的语句“Equal”。如果没有则返回它们之外的下一个`return`语句“Not equal”
### 来源
1 。 [“基本JavaScript与严格平等运算符的比较”JCC _算法和数据结构认证的_ fCC课程](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/comparison-with-the-strict-equality-operator)
### 资源
* [“使用Equality Operators” - _MDN JavaScript参考_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Using_the_Equality_Operators)

View File

@@ -0,0 +1,96 @@
---
title: Profile Lookup
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")问题说明:
我们的联系人列表中有一组代表不同人的对象。
已经为您预先编写了一个`lookUpProfile()`函数,它将**firstName**和一个属性( **prop** )作为参数。
该函数应检查**firstName**是否是实际联系人的**firstName** ,并且给定属性( **prop** )是该联系人的属性。
如果两者都为真则返回该属性的_值_ 。
如果**firstName**与任何联系人不对应,则返回`No such contact`
如果**prop**不对应任何有效属性,则返回`No such property`
* 更改下面的代码`// Only change code below this line` ,最多为`// Only change code above this line`
* 确保您正在编辑`lookUpProfile()`函数的内部。
* 该函数包括两个参数, **firstName**和**prop**
* 该函数应查看给定**firstName**参数的**联系人**列表。
* 如果找到匹配项,则该函数应查找给定的**prop**参数。
* 如果找到**firstName**和关联的**prop** ,则应返回**prop**的值。
* 如果找到**firstName**且未找到任何关联的**prop** ,则应返回`No such property`
* 如果在任何地方都找不到**firstName** ,则应返回`No such contact`
#### 相关链接
* [挑战:使用括号表示法访问对象属性](http://www.freecodecamp.com/challenges/accessing-objects-properties-with-bracket-notation)
* [挑战使用JavaScript迭代循环](http://www.freecodecamp.com/challenges/iterate-with-javascript-for-loops)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示1
使用`for`循环在**联系人**列表中循环。
> _现在尝试解决问题_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示2
使用嵌套的`if`首先检查语句是否匹配**的firstName**然后检查`if` **道具**匹配。
> _现在尝试解决问题_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示3
将你的`return "No such contact"`留在`for`循环中作为最后的全部。
> _现在尝试解决问题_
## 扰流警报!
![警告牌](//discourse-user-assets.s3.amazonaws.com/original/2X/2/2d6c412a50797771301e7ceabd554cef4edcd74d.gif)
**提前解决!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":初学者:")基本代码解决方案
```
for (var x = 0; x < contacts.length; x++){
if (contacts[x].firstName === name) {
if (contacts[x].hasOwnProperty(prop)) {
return contacts[x][prop];
} else {
return "No such property";
}
}
}
return "No such contact";
```
### 代码说明:
* `for`循环运行,从**联系人**列表中的第一个对象开始。
* 如果传递给函数的**firstName**参数与第一个对象中的`"firstName"`键的值匹配,则`if`语句将传递。
* 然后,我们使用`.hasOwnProperty()`方法(检查是否存在给定属性并返回布尔值),并将**prop**作为参数。如果是,则返回**prop**的值。
* 如果第二个`if`语句失败, `No such property`返回`No such property`
* 如果第一个`if`语句失败, `for`循环将继续到**联系人**列表中的下一个对象。
* 如果**firstName**参数与最终**联系人**对象不匹配,则`for`循环退出并且`No such contact`返回`No such contact`
**示例运行**
* `lookUpProfile("Akira","likes");`运行。
* `"Akira"`与第一个对象中的`"firstName"`键匹配,因此`if`语句返回true。
* 在第一个对象中找到`"likes"` ,因此第二个`if`语句返回true。
*`"likes"`返回- `"Pizza", "Coding", "Brownie Points"`
## ![: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`**供参考。

View File

@@ -0,0 +1,9 @@
---
title: Quoting Strings with Single Quotes
localeTitle: 单引号引用字符串
---
## 单引号引用字符串
这是一个存根。 [帮助我们的社区扩展它](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/quoting-strings-with-single-quotes/index.md) 。
[这种快速风格指南有助于确保您的拉取请求被接受](https://github.com/freecodecamp/guides/blob/master/README.md) 。

View File

@@ -0,0 +1,97 @@
---
title: Record Collection
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")问题说明:
您将获得一个JSON对象表示您的记录集合的一小部分。每张专辑都由唯一的ID号标识并具有多个属性。并非所有相册都有完整的信息。
编写一个带有**id** ,属性( **prop** )和**值的函数** 。
对于**集合中**的给定**id**
如果**value**为非空( **value==“”** ),则更新或设置**prop**的**值** 。
如果**prop**是**“tracks”**并且**value**是非空白的请检查数组中的给定元素是否具有“tracks”属性。如果元素具有“轨迹”属性则将**值**推到“轨迹”数组的末尾。如果元素没有该**属性** ,请创建属性和值对。
如果**值为**空,请删除该**道具** 。
始终返回整个集合对象。
* 更改下面的代码`// Only change code below this line` ,最多更改`// Alter values below to test your code`
* 请注意,您正在编辑`updateRecords`函数的内部。
* 对于与**集合**对象关联的给定**id**参数:
* 如果**value**参数不是空字符串,则更新(或设置) **prop**参数的**value**参数。
* 如果**prop**参数等于`"tracks"`且**值**不是空字符串,则将**值**推到**tracks**数组的末尾。
* 如果**value**是空字符串,则从对象中删除该**prop** 。
* 最后,返回**集合**对象。
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示1
使用`else if`语句检查所需的步骤。
> _现在尝试解决问题_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示2
说明中列出的第二步应首先在您的`else if`语句中。
> _现在尝试解决问题_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示3
要访问此对象中键的值,您将使用`collection[id][prop]`
> _现在尝试解决问题_
## 扰流警报!
![警告牌](//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 updateRecords(id, prop, value) {
if (prop === "tracks" && value !== "") {
if(collection[id][prop]) {
collection[id][prop].push(value);
}
else {
collection[id][prop]=[value];
}
} else if (value !== "") {
collection[id][prop] = value;
} else {
delete collection[id][prop];
}
return collection;
}
```
![:rocket:](https://forum.freecodecamp.com/images/emoji/emoji_one/rocket.png?v=3 ":火箭:") [运行代码](https://repl.it/C2AZ/0)
### 代码说明:
* 首先检查**prop**是否等于**轨道** AND如果**值**不是空字符串。如果两个测试都通过,则将**值**推入**轨道**数组。
* 如果第一次检查未通过,则接下来只检查**值**是否为空字符串。如果该测试通过,则将新键( **prop** )和值( **值** )添加到对象,或者如果**prop**已存在则更新现有键。
* 如果这两个检查都失败(意味着**值**必须是空字符串),则从对象中删除密钥( **prop** )。
**示例运行**
* `updateRecords(5439, "artist", "ABBA");`运行。
* **prop**等于“artist”而不是“tracks”所以`else if`语句的第一部分失败了。
* **value**不是空字符串因此else if语句的第二部分传递。
* `artist: "ABBA"`被添加到`5439` `id`
### 资源:
* [fCC的挑战使用括号表示法访问对象属性](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/accessing-object-properties-with-bracket-notation/)
* [fCC的挑战向JavaScript对象添加新属性](http://www.freecodecamp.com/challenges/add-new-properties-to-a-javascript-object)
* [fCC的挑战从JavaScript对象中删除属性](http://www.freecodecamp.com/challenges/delete-properties-from-a-javascript-object)
* [fCC的挑战访问嵌套对象](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/accessing-nested-objects/)
* [“Array.prototype.push” - _MDN JavaScript参考_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)
* [“删除运算符” - _MDN JavaScript参考_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete)

View File

@@ -0,0 +1,9 @@
---
title: Replacing If Else Chains with Switch
localeTitle: 如果用交换机替换其他链条
---
## 如果用交换机替换其他链条
这是一个存根。 [帮助我们的社区扩展它](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch/index.md) 。
[这种快速风格指南有助于确保您的拉取请求被接受](https://github.com/freecodecamp/guides/blob/master/README.md) 。

View File

@@ -0,0 +1,14 @@
---
title: Return a Value from a Function with Return
localeTitle: 从带返回的函数返回值
---
## 从带返回的函数返回值
使用`return` ,可以使函数输出数据。这是基本的代码解决方案:
```javascript
function timesFive(num) {
return num * 5;
}
```

View File

@@ -0,0 +1,9 @@
---
title: Return Early Pattern for Functions
localeTitle: 返回函数的早期模式
---
## 返回函数的早期模式
这是一个存根。 [帮助我们的社区扩展它](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/return-early-pattern-for-functions/index.md) 。
[这种快速风格指南有助于确保您的拉取请求被接受](https://github.com/freecodecamp/guides/blob/master/README.md) 。

View File

@@ -0,0 +1,53 @@
---
title: Returning Boolean Values from Functions
localeTitle: 从函数返回布尔值
---
## 从函数返回布尔值
我们可以使用比较运算符和最小代码在return语句中直接执行而不是使用if / else块来比较变量。
### 问题解释
_修复函数`isLess`以删除`if...else`语句。_
```js
// Fix this code
if (a < b) {
return true;
} else {
return false;
}
```
#### 提示1
与[前面的练习一样,](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/replacing-if-else-chains-with-switch)您将要更改函数返回正确值的方式,这意味着您不必重用或修改该代码,而是替换它。
> _现在尝试解决问题_
#### 提示2
为了返回`true``false` ,你不需要两个语句也不能使用`if`人。您只需要正确的[比较运算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators) 。
> _现在尝试解决问题_
## 扰流板警报!
**提前解决!**
## 代码解决方案
```javascript
function isLess(a, b) {
// Fix this code
return a <= b;
}
// Change these values to test
isLess(10, 15);
```
在[repl.it上](https://repl.it/@AdrianSkar/Basic-Js-Returning-boolean-from-function)运行代码。
### 资源
* [“小于或等于运算符(<=)” - _MDN Javascript参考_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Less_than_or_equal_operator_(%3C))

View File

@@ -0,0 +1,127 @@
---
title: Selecting from Many Options with Switch Statements
localeTitle: 从带有开关语句的多个选项中进行选择
---
## 从带有开关语句的多个选项中进行选择
_如果您有许多选项可供选择请使用`switch`语句。 `switch`语句测试一个值,并且可以有许多`case`语句来定义各种可能的值。从第一个匹配的`case`值执行语句,直到遇到`break` 。_
_这是一个伪代码示例_
```js
switch(num) {
case value1:
statement1;
break;
case value2:
statement2;
break;
...
case valueN:
statementN;
break;
}
```
### 多一点解释
switch语句首先计算其表达式。然后它查找第一个`case`子句,其表达式的计算结果与输入表达式的结果相同(使用[严格比较](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators) `===` )并将控制转移到该子句,执行相关的语句。(如果多个案例匹配)提供的值,即使案例彼此不相等,也会选择匹配的第一个案例。)
如果未找到匹配的`case`子句,程序将查找可选的`default`子句,如果找到,则将控制转移到该子句,执行关联的语句。如果未找到`default`子句,则程序将在`switch`结束后的语句处继续执行。按照惯例, `default`子句是最后一个子句,但不一定如此。
与每个案例标签关联的可选`break`语句确保一旦执行匹配语句程序就会断开switch并在switch后的语句处继续执行。如果省略`break` ,程序将继续执行`switch`语句中的下一个语句。 [1](#cite1)
### 问题说明:
_编写一个switch语句测试`val`并设置以下条件的`answer` _
* `1` - “alpha”
* `2` - “beta”
* `3` - “伽玛”,
* `4` - “三角洲”。
## 提示1
请记住,使用严格相等( `===` )测试`case`值。
> 现在尝试解决问题!
## 提示2
不要将_“以下条件”_视为有序列表因为它在原始的freeCodeCamp演示中查找但是作为值和语句如此处所示
> 现在尝试解决问题!
## 扰流警报!
### 你完全确定你想要的样子吗? ...
## 基本代码解决方案
```js
function caseInSwitch(val) {
var answer = "";
// Only change code below this line
switch(val) {
case 1:
return "alpha";
break;
case 2:
return "beta";
break;
case 3:
return "gamma";
break;
case 4:
return "delta";
break;
}
// Only change code above this line
return answer;
}
// Change this value to test
caseInSwitch(1);
```
### 代码说明
通常忽略的是,使用其他表达式的任何需要严格相等地测试`case`值,如下所示: `case === value`
## 替代代码解决方案
```javascript
function caseInSwitch(val) {
var answer = "";
// Only change code below this line
switch (val){
case 1:
answer="alpha";
break;
case 2:
answer="beta";
break;
case 3:
answer="gamma";
break;
case 4:
answer="delta";
break;
}
// Only change code above this line
return answer;
}
// Change this value to test
caseInSwitch(1);
```
·在[repl.it上](https://repl.it/@AdrianSkar/Basic-JS-Switch-statements)运行代码。
### 代码说明
由于您已经在名为`answer`的函数的开头定义了一个变量并将其定义为最后一个return语句因此您可以为每个案例为其分配新值并根据传递给函数的值返回预期答案。
### 来源
1 。 [“switch”的描述 - _MDN JavaScript参考_](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch#Description) 。

View File

@@ -0,0 +1,65 @@
---
title: Shopping List
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")问题说明:
在变量**myList中**创建购物清单。该列表应该是包含多个子阵列的多维数组。
每个子数组中的第一个元素应包含一个带有项目名称的字符串。第二个元素应该是代表数量的数字,即`["Chocolate Bar", 15]`
列表中应该至少有5个子数组。
* **myList**应该是一个数组。
* 每个子数组中的第一个元素都必须是字符串。
* 每个子数组中的第二个元素都必须是数字。
* 您的列表中必须至少有5个项目。
#### 相关链接
* [挑战:将一个阵列嵌套在另一个阵列中](https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/basic-javascript/nest-one-array-within-another-array/)
## ![: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 ":初学者:")基本代码解决方案
```
var myList = [["Canned Beans", 3],["Milk Galon", 1],["Cereal", 2],["Toilet Paper", 12],["Sack of Rice", 1]];
```
### 代码说明:
* 创建多维数组。
* 该数组由五个数组组成,每个数组由一个字符串和一个整数组成,顺序相同。
## ![: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: Stand in Line
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")问题说明:
在计算机科学中, _队列_是一种抽象的**数据结构** ,其中项目按顺序保存。可以在**队列**的后面添加新项目,并从**队列**的前面取出旧项目。
编写一个函数`nextInLine` ,它接受一个数组( **arr** )和一个数字( **item** )作为参数。将数字添加到数组的末尾,然后删除数组的第一个元素。然后, `nextInLine`函数应返回已删除的元素。
* 更改下面的代码`//Your Code here` ,最多`//Change this line`
* 确保您正在编辑`nextInLine`函数的内部。
* 使用您学习的数组函数将**项目**添加到数组**arr**的末尾。
* 使用您学习的数组函数从数组**arr中**删除第一个元素。
* 返回删除的元素。
#### 相关链接
* [挑战用push操纵数组](http://www.freecodecamp.com/challenges/manipulate-arrays-with-push)
* [挑战使用shift操纵数组](http://www.freecodecamp.com/challenges/manipulate-arrays-with-shift)
* [挑战:将值传递给带参数的函数](http://www.freecodecamp.com/challenges/passing-values-to-functions-with-arguments)
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示1
`push()`方法将一个项添加到数组的末尾。
> _现在尝试解决问题_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示2
`shift()`方法删除数组的第一个元素。它还返回删除的元素。
> _现在尝试解决问题_
## ![:speech_balloon:](https://forum.freecodecamp.com/images/emoji/emoji_one/speech_balloon.png?v=3 "speech_balloon")提示3
函数`nextInLine`使用**arr**和**item** 。这些是测试将用于传递他们将测试的数组元素的内容。它允许该功能可重复使用。不要硬编码函数内的任何测试。
> _现在尝试解决问题_
## 扰流警报!
![警告牌](//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 nextInLine(arr, item) {
// Your code here
arr.push(item);
var removed = arr.shift();
return removed; // Change this line
}
```
### 代码说明:
* 在**arr**的末尾按下**项目** 。
* 在**arr**上调用`shift()`方法以获取第一个项目并将其存储在**已删除的**项目中。
* 返回**删除** 。
**示例运行**
* 测试`nextInLine([2,1]);`运行。
* 调用`nextInLine`函数。 **arr**成为\[2\]。 **项目**变为1。
* `arr.push(item);`按1到\[2\]。所以**arr**现在是\[2,1\]。
* `var removed = arr.shift();`删除第一个元素。所以**arr**现在是\[1\]。 2已被删除并存储在**已删除** 。
* `return removed;`返回2。
**_注意_** :您实际上并不需要**删除**变量。删除的元素可以使用`return arr.shift();`直接`return arr.shift();`

View File

@@ -0,0 +1,17 @@
---
title: Store Multiple Values in one Variable using JavaScript Arrays
localeTitle: 使用JavaScript数组在一个变量中存储多个值
---
## 使用JavaScript数组在一个变量中存储多个值
数组允许您在单个变量中存储大量不同的数据。您所要做的就是将数据放入数组中,用逗号分隔。像这样......
```javascript
var arr = ["Code for change", 123];
```
请记住,数组被定义为一行。您将不同的数据存储在单个“行”(变量)中。
如果您需要更多帮助,请查看此链接:
[W3学校的JavaScript阵列](https://www.w3schools.com/js/js_arrays.asp)

View File

@@ -0,0 +1,15 @@
---
title: Storing Values with the Assignment Operator
localeTitle: 使用赋值运算符存储值
---
## 使用赋值运算符存储值
这就像数学一样!您可以使用'='赋值运算符将变量设置为数据的占位符。换句话说,变量将存储数据。
```
var a;
a = 5; // The variable 'a' is equal to 5
var zxcv;
zxcv = 123; // The variable 'abc' is equal to 123
```

View File

@@ -0,0 +1,12 @@
---
title: Subtract One Number from Another with JavaScript
localeTitle: 使用JavaScript从另一个数字中减去一个数字
---
## 使用JavaScript从另一个数字中减去一个数字
使用' - '减法运算符,您可以得到两个数字的差异......
```
var diff1 = 30 - 14; // Difference is 16
var diff2 = 90 - 60; // Difference is 30
```

View File

@@ -0,0 +1,64 @@
---
title: Testing Objects for Properties
localeTitle: 测试属性的对象
---
## 测试属性的对象
这是一个例子:
```javascript
// Setup
var myObj = {
gift: "pony",
pet: "kitten",
bed: "sleigh"
};
function checkObj(checkProp) {
// Your Code Here
return "Change Me!";
}
// Test your code by modifying these values
checkObj("gift");
```
这是一个解决方案:
我们在这里不做任何改动:
```javascript
// Setup
var myObj = {
gift: "pony",
pet: "kitten",
bed: "sleigh"
};
```
此外,在函数体中我们使用`.hasOwnProperty(propname)`对象方法来确定该对象是否具有给定的属性名称。带有布尔值的`if/else`语句将帮助我们:
```javascript
function checkObj(checkProp) {
// Your Code Here
if (myObj.hasOwnProperty(checkProp) == true) {
return myObj[checkProp];
}
else {
```
and change the value of `return` in `else` statement:
```
JavaScript的 返回“未找到” } }
```
Now, you can change `checkObj` values:
```
JavaScript的 //通过修改这些值来测试代码 checkObj “礼物”);
```
Here's a full solution:
```
JavaScript的 function checkObjcheckProp{ //你的代码在这里 ifmyObj.hasOwnPropertycheckProp== true{ return myObj \[checkProp\]; } 其他{ 返回“未找到” } } //通过修改这些值来测试代码 checkObj “礼物”); \`\`\`

View File

@@ -0,0 +1,9 @@
---
title: Understand String Immutability
localeTitle: 理解字符串不变性
---
## 理解字符串不变性
这是一个存根。 [帮助我们的社区扩展它](https://github.com/freecodecamp/guides/tree/master/src/pages/certifications/javascript-algorithms-and-data-structures/basic-javascript/understand-string-immutability/index.md) 。
[这种快速风格指南有助于确保您的拉取请求被接受](https://github.com/freecodecamp/guides/blob/master/README.md) 。

View File

@@ -0,0 +1,42 @@
---
title: Understanding Boolean values
localeTitle: 了解布尔值
---
## 了解布尔值
### 问题解释:
修改`welcomeToBooleans`函数,以便在单击运行按钮时返回`true`而不是`false`
### 提示1
您只需要编辑第5行这样函数就会返回`true`而不是`false`
> _现在尝试解决问题_
## 扰流警报!
**提前解决!**
## ![:beginner:](https://forum.freecodecamp.com/images/emoji/emoji_one/beginner.png?v=3 ":初学者:")基本代码解决方案
```javascript
function welcomeToBooleans() {
// Only change code below this line.
return true; // Change this line
// Only change code above this line.
}
```
### 代码说明
只需修改`Boolean`值,您就不能将函数从`false`返回到`true`将满足要求。
### 资源
[MDN术语表 - 布尔值](https://developer.mozilla.org/en-US/docs/Glossary/Boolean)
[Wikipedia - 布尔数据类型](https://en.wikipedia.org/wiki/Boolean_data_type)

View File

@@ -0,0 +1,14 @@
---
title: Understanding Case Sensitivity in Variables
localeTitle: 了解变量中的大小写敏感度
---
## 了解变量中的大小写敏感度
一个流行的编程规范是在创建变量名时使用**Camel案例** 。请注意,第一个单词是小写,后面的每个单词都是大写。这里有些例子:
```
var camelCase;
var someNumber;
var theBestVariableEver;
var weWillStoreNumbersInThisVariable;
```

View File

@@ -0,0 +1,22 @@
---
title: Understanding Undefined Value returned from a Function
localeTitle: 了解从函数返回的未定义值
---
## 了解从函数返回的未定义值
没有`return`语句的函数,输出为`undefined` 。因此,如果您尝试将函数的变量等于没有`return`语句的函数的输出,则该变量将等于`undefined`
来吧,像这样定义`addFive()` ......
```javascript
function addFive() {
sum += 5;
}
```
如您所见, `sum`加5而没有问题但由于没有return语句因此存在`undefined`输出。
```javascript
var result = addFive(); // This is undefined
```

View File

@@ -0,0 +1,7 @@
---
title: Understanding Uninitialized Variables
localeTitle: 了解未初始化的变量
---
## 了解未初始化的变量
确保变量具有正确的数据值。保留未初始化的变量,意味着不给它一个值,如果你想对它进行操作,可能会导致问题。

View File

@@ -0,0 +1,28 @@
---
title: Updating Object Properties
localeTitle: 更新对象属性
---
## 更新对象属性
## 暗示:
使用点\*\*。 \*\*表示法访问对象属性。
## 剧透警报:未来的解决方案!
## 解:
```javascript
// Setup
var myDog = {
"name": "Coder",
"legs": 4,
"tails": 1,
"friends": ["freeCodeCamp Campers"]
};
// Only change code below this line.
myDog.name = "Happy Coder"; // Solution
```

View File

@@ -0,0 +1,12 @@
---
title: Use Bracket Notation to Find the First Character in a String
localeTitle: 使用括号表示法查找字符串中的第一个字符
---
## 使用括号表示法查找字符串中的第一个字符
请记住,字符串的第一个字符位于第零个位置。例如:
```
var str = "Hello";
var letter = str[0]; // This equals "H"
```

View File

@@ -0,0 +1,19 @@
---
title: Use Bracket Notation to Find the Last Character in a String
localeTitle: 使用括号表示法查找字符串中的最后一个字符
---
## 使用括号表示法查找字符串中的最后一个字符
请考虑以下字符串:
```
var str = "Coding";
```
这个字符串的长度为6个字符所以如果你在字符串上使用.length它会给你6.但请记住第一个字符位于第零个位置。第二个角色位于第一个位置。第三个角色位于第二个位置。
继续前进,你最终得到第六个字符(基于上面的字符串,是'g')位于第五个位置。这就是你获得字符串的最后一个字符的原因:
```
var lastChar = str[str.length - 1]; // This is 6 - 1, which is 5
```
这将是'g'。

View File

@@ -0,0 +1,7 @@
---
title: Use Bracket Notation to Find the Nth Character in a String
localeTitle: 使用括号表示法查找字符串中的第N个字符
---
## 使用括号表示法查找字符串中的第N个字符
请记住字符串的第一个字符位于第0个位置。所以第二个角色应该在第一个位置。然后第三个角色应该在...嗯?

View File

@@ -0,0 +1,13 @@
---
title: Use Bracket Notation to Find the Nth-to-Last Character in a String
localeTitle: 使用括号表示法查找字符串中的第N个到最后一个字符
---
## 使用括号表示法查找字符串中的第N个到最后一个字符
请记住,任何字符的位置,是**字符串**的**长度减去1减去后面的字符数** 。例如,如果您要查找以下字符串的倒数第三个字符:
```
var str = "Programming";
var secondToLastChar = str[str.length - 2]; // This is 'i'
```
如你所见,'n'之后还有一个额外的字符(即'g')。

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