chore(i18n,curriculum): update translations (#42070)

This commit is contained in:
camperbot
2021-05-10 01:12:02 +05:30
committed by GitHub
parent 91a6690634
commit 253f30b205
48 changed files with 246 additions and 230 deletions

View File

@ -27,7 +27,7 @@ arr[3][0][1];
`arr[3]``[[10, 11, 12], 13, 14]``arr[3][0]``[10, 11, 12]`,並且 `arr[3][0][1]``11`
**注意:** 數組名與方括號之間不應該有任何空格,比如`array [0][0]` 甚至是 `array [0] [0]` 都是不允許的。 儘管 JavaScript 能夠正確處理這種情況,但是當其他程序員閱讀你寫的代碼時,這可能讓他們感到困惑。
**注意:** 數組名與方括號之間不應該有任何空格,比如 `array [0][0]` 甚至是 `array [0] [0]` 都是不允許的。 儘管 JavaScript 能夠正確處理這種情況,但是當其他程序員閱讀你寫的代碼時,這可能讓他們感到困惑。
# --instructions--

View File

@ -40,7 +40,7 @@ ourPets[1].names[0];
# --instructions--
使用對象的點號和數組的方括號變量 `myPlants` 檢索出第二棵樹
使用點和方括號,將變量 `secondTree` 的值設置爲 `myPlants` 對象中 `trees` 列表的第二個項目
# --hints--
@ -72,7 +72,6 @@ assert(/=\s*myPlants\[1\].list\[1\]/.test(code));
## --seed-contents--
```js
// Setup
var myPlants = [
{
type: "flowers",
@ -92,9 +91,7 @@ var myPlants = [
}
];
// Only change code below this line
var secondTree = ""; // Change this line
var secondTree = "";
```
# --solutions--
@ -119,7 +116,5 @@ var myPlants = [
}
];
// Only change code below this line
var secondTree = myPlants[1].list[1];
```

View File

@ -50,7 +50,7 @@ ourDog.bark = "bow-wow";
assert(myDog.bark !== undefined);
```
不應該在初始化部分添加 `bark`
不應該在 `myDog`初始化添加 `bark`
```js
assert(!/bark[^\n]:/.test(code));
@ -67,7 +67,6 @@ assert(!/bark[^\n]:/.test(code));
## --seed-contents--
```js
// Setup
var myDog = {
"name": "Happy Coder",
"legs": 4,
@ -75,7 +74,7 @@ var myDog = {
"friends": ["freeCodeCamp Campers"]
};
// Only change code below this line
```
# --solutions--

View File

@ -20,7 +20,7 @@ JavaScript有兩種寫註釋的方法。
// This is an in-line comment.
```
你也可以使用多行註釋來註釋你的代碼,使用 `/*` 開始, `*/` 結束. 這是一個多行註釋:
你也可以使用多行註釋來註釋你的代碼,使用 `/*` 開始, `*/` 結束 這是一個多行註釋:
```js
/* This is a

View File

@ -17,7 +17,7 @@ dashedName: concatenating-strings-with-plus-operator
'My name is Alan,' + ' I concatenate.'
```
**提示:**注意空格。 拼接操作不會在兩個字符串之間添加空格。所以,如果想加上空格的話,你需要自己在字符串裏面添加。
**提示:** 注意空格。 拼接操作不會在兩個字符串之間添加空格。所以,如果想加上空格的話,你需要自己在字符串裏面添加。
例如:

View File

@ -11,7 +11,7 @@ dashedName: concatenating-strings-with-the-plus-equals-operator
我們還可以使用 `+=` 運算符來<dfn>拼接</dfn>字符串到現有字符串變量的結尾。 對於那些被分割成幾段的長的字符串來說,這一操作是非常有用的。
**提示:**注意空格。 拼接操作不會在兩個字符串之間添加空格,所以,如果想要加上空格的話,你需要自己在字符串裏面添加。
**提示:** 注意空格。 拼接操作不會在兩個字符串之間添加空格,所以,如果想要加上空格的話,你需要自己在字符串裏面添加。
例如:

View File

@ -11,7 +11,7 @@ dashedName: create-decimal-numbers-with-javascript
我們也可以把小數存儲到變量中。 小數有時候也被稱作<dfn>浮點數</dfn>或者 <dfn>floats</dfn>
**提示:**不是所有的實數都可以用浮點數(<dfn>floating point</dfn>)來表示。 因爲可能產生四捨五入的錯誤, [查看詳情](https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems)。
**提示:** 不是所有的實數都可以用浮點數(<dfn>floating point</dfn>)來表示。 因爲可能產生四捨五入的錯誤, [查看詳情](https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems)。
# --instructions--

View File

@ -18,7 +18,7 @@ for (var i = 0; i < arr.length; i++) {
}
```
記住數組的索引從零開始的,這意味着數組的最後一個元素的下標是:`length - 1`(數組的長度 -1。 我們這個循環的條件是 `i < arr.length`,當 `i` 的值爲 `length` 的時候循環就停止了。 在這個例子中,最後一個循環是 `i === 4`,也就是說,當 `i` 的值等於 `arr.length` 時,結果輸出 `6`
記住數組的索引從零開始的,這意味着數組的最後一個元素的下標是:`length - 1`(數組的長度 -1。 我們這個循環的條件是 `i < arr.length`,當 `i` 的值爲 `length` 的時候循環就停止了。 在這個例子中,最後一個循環是 `i === 4`,也就是說,當 `i` 的值等於 `arr.length - 1` 時,結果輸出 `6` 然後 `i` 增加到 `5`,循環會終止,因爲 `i < arr.length``false`
# --instructions--

View File

@ -59,65 +59,69 @@ var ourMusic = [
assert(Array.isArray(myMusic));
```
`myMusic` 應該至少包含兩個元素
`myMusic`應該至少2個元素
```js
assert(myMusic.length > 1);
```
`myMusic[1]` 應該是一個對象
`myMusic`元素數組中應該是物體
```js
assert(typeof myMusic[1] === 'object');
myMusic.forEach(object => {assert.typeOf(object, 'object')})
```
`myMusic[1]` 至少要包含四個屬性
`myMusic` 中的對象應該至少有 4 個屬性
```js
assert(Object.keys(myMusic[1]).length > 3);
myMusic.forEach(object => {assert(Object.keys(object).length > 3); });
```
`myMusic[1]` 應該包含一個類型爲字符串的 `artist` 的屬性
`myMusic` 中的對象應該包含一個類型爲字符串的屬性 `artist`
```js
assert(
myMusic[1].hasOwnProperty('artist') && typeof myMusic[1].artist === 'string'
);
myMusic.forEach(object => {
assert.containsAllKeys(object, ['artist']);
assert.typeOf(object.artist, 'string')
})
```
`myMusic[1]` 應該包含一個類型爲字符串的 `title` 屬性
`myMusic` 中的對象應該包含一個類型爲字符串的屬性 `title`
```js
assert(
myMusic[1].hasOwnProperty('title') && typeof myMusic[1].title === 'string'
);
myMusic.forEach(object => {
assert.containsAllKeys(object, ['title']);
assert.typeOf(object.title, 'string')
})
```
`myMusic[1]` 應該包含一個類型爲數字的 `release_year` 屬性
`myMusic` 中的對象應該包含一個類型爲數字的屬性 `release_year`
```js
assert(
myMusic[1].hasOwnProperty('release_year') &&
typeof myMusic[1].release_year === 'number'
);
myMusic.forEach(object => {
assert.containsAllKeys(object, ['release_year']);
assert.typeOf(object.release_year, 'number')
})
```
`myMusic[1]` 應該包含一個類型爲數組的 `formats` 屬性
`myMusic` 中的對象應該包含一個類型爲數組的 `formats` 屬性
```js
assert(
myMusic[1].hasOwnProperty('formats') && Array.isArray(myMusic[1].formats)
);
myMusic.forEach(object => {
assert.containsAllKeys(object, ['formats']);
assert.typeOf(object.formats, 'array')
})
```
`formats`應該是一個至少包含兩個字符串元素的數組
```js
assert(
myMusic[1].formats.every(function (item) {
return typeof item === 'string';
}) && myMusic[1].formats.length > 1
);
myMusic.forEach(object => {
object.formats.forEach(format => {
assert.typeOf(format, 'string')
});
assert.isAtLeast(object.formats.length, 2)
})
```
# --seed--
@ -143,7 +147,6 @@ var myMusic = [
],
"gold": true
}
// Add a record here
];
```

View File

@ -20,11 +20,11 @@ ourArray[0] = 15;
`ourArray` 值爲 `[15, 40, 30]`
**注意:**數組名與方括號之間不應該有任何空格,比如`array [0]` 。 儘管 JavaScript 能夠正確處理這種情況,但是當其他程序員閱讀你寫的代碼時,這可能讓他們感到困惑。
**注意:** 數組名與方括號之間不應該有任何空格,比如 `array [0]` 。 儘管 JavaScript 能夠正確處理這種情況,但是當其他程序員閱讀你寫的代碼時,這可能讓他們感到困惑。
# --instructions--
將數組 `myArray`中索引爲 `0`上的值修改爲 `45`
將數組 `myArray` 中索引爲 `0` 上的值修改爲 `45`
# --hints--

View File

@ -23,7 +23,7 @@ myVar = 13 * 13;
# --instructions--
改變數值 `0`來讓變量 product 的值等於`80`
改變數值 `0` 來讓變量 product 的值等於`80`
# --hints--

View File

@ -9,7 +9,7 @@ dashedName: passing-values-to-functions-with-arguments
# --description--
函數的參數 <dfn>parameters</dfn>)在函數中充當調用函數時傳入函數的輸入佔位符(也叫形參)的作用。 函數調用時,參數可以爲一個或多個。 調用函數時輸入(或傳遞 <dfn>"passed"</dfn>)的實際值被稱爲參數(<dfn>arguments</dfn>)。
函數的參數 <dfn>parameters</dfn>)在函數調用中充當傳入函數的輸入佔位符(也叫形參)。 函數調用時,參數可以爲一個或多個。 調用函數時輸入(或傳遞 <dfn>"passed"</dfn>)的實際值被稱爲參數(<dfn>arguments</dfn>)。
這是帶有兩個參數的函數,`param1``param2`
@ -19,7 +19,7 @@ function testFun(param1, param2) {
}
```
然後我們可以調用 `testFun`,就像這樣: `testFun("Hello", "World");`。 我們傳入了兩個字符串參數, `Hello``World`。 在函數中,`param1` 等於字符串 `Hello` `param2` 等於字符串 `World`。 請注意,`testFun` 函數可以多次調用,每次調用時傳遞的參數會決定參數的實際值。
然後我們可以調用 `testFun`,就像這樣: `testFun("Hello", "World");`。 我們傳入了兩個字符串參數, `Hello``World`。 在函數中,`param1` 等於字符串 `Hello` 以及 `param2` 等於字符串 `World`。 請注意,`testFun` 函數可以多次調用,每次調用時傳遞的參數會決定參數的實際值。
# --instructions--

View File

@ -33,7 +33,7 @@ badStr = 'Finn responds, "Let's go!"';
在上面的 <dfn>goodStr</dfn> 中,通過使用反斜槓 `\` 轉義字符可以安全地使用兩種引號。
**提示:**不要混淆反斜槓 `\` 和斜槓 `/`。 它們不是一回事。
**提示:** 不要混淆反斜槓 `\` 和斜槓 `/`。 它們不是一回事。
# --instructions--

View File

@ -8,21 +8,21 @@ dashedName: record-collection
# --description--
給定一個 JSON 對象,用來表示部分音樂專輯收藏。 每張專輯都有幾個屬性和一個唯一的 id 號作爲鍵值。 並非所有專輯都有完整的信息。
給定一個對象,用來表示部分音樂專輯收藏。 每張專輯都有幾個屬性和一個唯一的 id 號作爲鍵值。 並非所有專輯都有完整的信息。
`updateRecords` 函數開使,這個函數需要一個對象 `collection`,一個 `id`,一個 `prop` (`artist``tracks`), 和 `value`。 使用下面的規則完成函數來修改傳遞給函數的對象。
`updateRecords` 函數開,這個函數需要一個對象 `records`,包含一個音樂專輯集合,一個 `id`,一個 `prop``artist``tracks`),和一個 `value`。 使用下面的規則完成函數來修改傳遞給函數的對象。
- 你的函數必須始終返回整個對象。
- 函數必須始終返回整個音樂專輯集合對象。
- 如果 `prop` 不是 `tracks` 並且 `value` 不是一個空字符串, 將相冊的 `prop` 更新或設置爲 `value`
- 如果 `prop``tracks` 但專輯沒有 `tracks` 屬性,則應創建空數組併爲其添加 `value`
- 如果 `prop``tracks` 並且 `value` 不是一個空字符串,將 `value` 添加到相冊現有 `tracks` 數組的末尾。
- 如果 `value` 是空字符串,從專輯裏刪除指定的 `prop`
**注意:**`collection` 對象做爲測試參數對象。
**注意:**`recordCollection` 對象做爲測試參數對象。
# --hints--
執行 `updateRecords(collection, 5439, "artist", "ABBA")`, `artist` 應該是字符串 `ABBA`
執行 `updateRecords(recordCollection, 5439, "artist", "ABBA")``artist` 的值應該是字符串 `ABBA`
```js
assert(
@ -31,7 +31,7 @@ assert(
);
```
執行 `updateRecords(collection, 5439, "tracks", "Take a Chance on Me")` 後,`tracks` 的最後一個元素應該爲字符串 `Take a Chance on Me`
執行 `updateRecords(recordCollection, 5439, "tracks", "Take a Chance on Me")` 後,`tracks` 的最後一個元素應該爲字符串 `Take a Chance on Me`
```js
assert(
@ -41,14 +41,14 @@ assert(
);
```
執行 `updateRecords(collection, 2548, "artist", "")` 後, `artist` 不應被設置
執行 `updateRecords(recordCollection, 2548, "artist", "")` 後, `artist` 不應被設置爲任何值。
```js
updateRecords(_recordCollection, 2548, 'artist', '');
assert(!_recordCollection[2548].hasOwnProperty('artist'));
```
執行 `updateRecords(collection, 1245, "tracks", "Addicted to Love")` 後,`tracks` 的最後一個元素應該爲字符串 `Addicted to Love`
執行 `updateRecords(recordCollection, 1245, "tracks", "Addicted to Love")` 後,`tracks` 的最後一個元素應該爲字符串 `Addicted to Love`
```js
assert(
@ -58,7 +58,7 @@ assert(
);
```
執行 `updateRecords(collection, 2468, "tracks", "Free")` 後,`tracks` 的第一個元素應該爲字符串 `1999`
執行 `updateRecords(recordCollection, 2468, "tracks", "Free")` 後,`tracks` 的第一個元素應該爲字符串 `1999`
```js
assert(
@ -68,14 +68,14 @@ assert(
);
```
執行 `updateRecords(collection, 2548, "tracks", "")` 後, `tracks` 不應被設置
執行 `updateRecords(recordCollection, 2548, "tracks", "")` 後, `tracks` 不應被設置爲任何值。
```js
updateRecords(_recordCollection, 2548, 'tracks', '');
assert(!_recordCollection[2548].hasOwnProperty('tracks'));
```
執行 `updateRecords(collection, 1245, "albumTitle", "Riptide")`, `albumTitle` 應該是字符串 `Riptide`
執行 `updateRecords(recordCollection, 1245, "albumTitle", "Riptide")``albumTitle` 的值應該是字符串 `Riptide`
```js
assert(
@ -115,7 +115,7 @@ const _recordCollection = {
```js
// Setup
var collection = {
var recordCollection = {
2548: {
albumTitle: 'Slippery When Wet',
artist: 'Bon Jovi',
@ -136,17 +136,17 @@ var collection = {
};
// Only change code below this line
function updateRecords(object, id, prop, value) {
return object;
function updateRecords(records, id, prop, value) {
return records;
}
updateRecords(collection, 5439, 'artist', 'ABBA');
updateRecords(recordCollection, 5439, 'artist', 'ABBA');
```
# --solutions--
```js
var collection = {
var recordCollection = {
2548: {
albumTitle: 'Slippery When Wet',
artist: 'Bon Jovi',
@ -167,15 +167,15 @@ var collection = {
};
// Only change code below this line
function updateRecords(object, id, prop, value) {
if (value === '') delete object[id][prop];
function updateRecords(records, id, prop, value) {
if (value === '') delete records[id][prop];
else if (prop === 'tracks') {
object[id][prop] = object[id][prop] || [];
object[id][prop].push(value);
records[id][prop] = records[id][prop] || [];
records[id][prop].push(value);
} else {
object[id][prop] = value;
records[id][prop] = value;
}
return object;
return records;
}
```

View File

@ -11,7 +11,7 @@ dashedName: use-bracket-notation-to-find-the-first-character-in-a-string
方括號表示法(<dfn>Bracket notation</dfn>)是一種在字符串中的特定 index索引處獲取字符的方法。
大多數現代編程語言如JavaScript不同於人類從 1 開始計數。 它們是從 0 開始計數。 這被稱爲基於零(<dfn>Zero-based</dfn>)的索引。
大多數現代編程語言,如 JavaScript不同於人類從 1 開始計數。 它們是從 0 開始計數。 這被稱爲基於零(<dfn>Zero-based</dfn>)的索引。
例如,單詞 `Charles` 的索引 0 的字符是 `C`。 所以在 `var firstName = "Charles"` 中,你可以使用 `firstName[0]` 來獲得第一個位置上的字符。

View File

@ -23,7 +23,14 @@ function functionName() {
# --instructions--
<ol><li>先創建一個名爲 <code>reusableFunction</code> 的函數,這個函數可以打印 <code>"Hi World"</code> 到控制檯上。</li><li>然後調用這個函數。</li></ol>
<ol>
<li>
先創建一個名爲 <code>reusableFunction</code> 的函數,這個函數打印 <code>Hi World</code> 到控制檯上。
</li>
<li>
然後調用這個函數。
</li>
</ol>
# --hints--

View File

@ -180,6 +180,12 @@ assert(telephoneCheck('(555-555-5555') === false);
assert(telephoneCheck('(555)5(55?)-5555') === false);
```
`telephoneCheck("55 55-55-555-5")` 應返回 `false`
```js
assert(telephoneCheck('55 55-55-555-5') === false);
```
# --seed--
## --seed-contents--

View File

@ -21,7 +21,7 @@ dashedName: remove-whitespace-from-start-and-end
`result` 應該等於 `Hello, World!`
```js
assert(result == 'Hello, World!');
assert(result === 'Hello, World!');
```
你不應該使用 `String.prototype.trim()` 方法。
@ -30,10 +30,10 @@ assert(result == 'Hello, World!');
assert(!code.match(/\.?[\s\S]*?trim/));
```
`result` 變量不應該設置爲等於字符串。
`result` 變量的值不應該是一個字符串。
```js
assert(!code.match(/result\s*=\s*".*?"/));
assert(!code.match(/result\s*=\s*["'`].*?["'`]/));
```
# --seed--