Skip to content

Commit 941c4c0

Browse files
authored
Merge pull request javascript-tutorial#608 from javascript-tutorial/leviding-patch-2
Update translation of 1-js/05-data-types/07-map-set
2 parents 4078ab9 + d71e23a commit 941c4c0

6 files changed

Lines changed: 98 additions & 102 deletions

File tree

1-js/05-data-types/07-map-set/01-array-unique-map/task.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@ importance: 5
22

33
---
44

5-
# 过滤唯一数组元素
5+
# 过滤数组中的唯一元素
66

77
定义 `arr` 为一个数组。
88

9-
创建一个函数 `unique(arr)`函数将返回一个数组,包含 `arr` 中所有元素且元素均唯一
9+
创建一个函数 `unique(arr)`该函数返回一个由 `arr` 中所有唯一元素所组成的数组
1010

1111
例如:
1212

1313
```js
1414
function unique(arr) {
15-
 /* 你的代码 */
15+
/* 你的代码 */
1616
}
1717

1818
let values = ["Hare", "Krishna", "Hare", "Krishna",
@@ -22,6 +22,6 @@ let values = ["Hare", "Krishna", "Hare", "Krishna",
2222
alert( unique(values) ); // Hare, Krishna, :-O
2323
```
2424

25-
附:这里用到了 string 类型,但其实可以是任何类型的值。
25+
P.S. 这里用到了 string 类型,但其实可以是任何类型的值。
2626

27-
附:使用 `Set` 来存储唯一的数值
27+
P.S. 使用 `Set` 来存储唯一值

1-js/05-data-types/07-map-set/02-filter-anagrams/solution.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
为了找到所有 anagrams,让我们把每个单词打散为字母并排序。当单词有序后,所有的 anagrams 都一样
1+
为了找到所有字谜(anagram),让我们把每个单词打散为字母并进行排序。当字母被排序后,所有的字谜就都一样了
22

33
例如:
44

@@ -9,14 +9,14 @@ cheaters, hectares, teachers -> aceehrst
99
...
1010
```
1111

12-
我们将会使用排序后字母的变量作为 map 的键,为每一个键仅保存一个值
12+
我们将使用进行字母排序后的单词的变体(variant)作为 map 的键,每个键仅对应存储一个值
1313

1414
```js run
1515
function aclean(arr) {
1616
let map = new Map();
1717

1818
for (let word of arr) {
19-
   // 将单词打散为字母,排序然后拼接回来
19+
// 将单词 split 成字母,对字母进行排序,之后再 join 回来
2020
*!*
2121
let sorted = word.toLowerCase().split('').sort().join(''); // (*)
2222
*/!*
@@ -31,7 +31,7 @@ let arr = ["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"];
3131
alert( aclean(arr) );
3232
```
3333

34-
字母排序在行 `(*)` 以链式调用的方式完成
34+
字母排序在 `(*)` 行以链式调用的方式完成
3535

3636
为了方便,我们把它分解为多行:
3737

@@ -43,23 +43,23 @@ let sorted = word // PAN
4343
.join(''); // anp
4444
```
4545

46-
两个不同的单词 `'PAN'``'nap'` 得到了同样的字母排序格式 `'anp'`
46+
两个不同的单词 `'PAN'``'nap'` 得到了同样的字母排序形式 `'anp'`
4747

48-
下一行将单词放入 map:
48+
下一行是将单词放入 map:
4949

5050
```js
5151
map.set(sorted, word);
5252
```
5353

54-
如果我们遇到了一个有相同字母排序格式的单词,那么他就会覆盖 map 中相同键的前一个值。所以我们将总会得到每个字母格式下最靠后的单词。
54+
如果我们再次遇到相同字母排序形式的单词,那么它将会覆盖 map 中有相同键的前一个值。因此,每个字母形式(译注:排序后的)最多只有一个单词。(译注:并且是每个字母形式中最靠后的那个值)
5555

56-
最后 `Array.from(map.values())` 将 map 的值迭代(我们不需要结果的键)然后返回数组集合
56+
最后`Array.from(map.values())` 将 map 的值迭代(我们不需要结果的键)为数组形式,并返回这个数组
5757

58-
这里我们也可以使用一般的对象而不用 `Map`,因为键就是字符串。
58+
在这里,我们也可以使用普通对象(plain object)而不用 `Map`,因为键就是字符串。
5959

60-
这就是答案
60+
下面是解决方案
6161

62-
```js run
62+
```js run demo
6363
function aclean(arr) {
6464
let obj = {};
6565

@@ -68,7 +68,7 @@ function aclean(arr) {
6868
obj[sorted] = arr[i];
6969
}
7070

71-
return Array.from(Object.values(obj));
71+
return Object.values(obj);
7272
}
7373

7474
let arr = ["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"];

1-js/05-data-types/07-map-set/02-filter-anagrams/task.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ importance: 4
22

33
---
44

5-
# 过滤 anagrams
5+
# 过滤字谜(anagrams
66

7-
[Anagrams](https://en.wikipedia.org/wiki/Anagram) 是有相同数量相同字母但是顺序不同的单词
7+
[Anagrams](https://en.wikipedia.org/wiki/Anagram) 是具有相同数量相同字母但是顺序不同的单词
88

99
例如:
1010

@@ -14,7 +14,7 @@ ear - are - era
1414
cheaters - hectares - teachers
1515
```
1616

17-
写一个函数 `aclean(arr)`它返回的数组中 anagrams 被删除
17+
写一个函数 `aclean(arr)`它返回被清除了字谜(anagrams)的数组
1818

1919
例如:
2020

@@ -24,5 +24,5 @@ let arr = ["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"];
2424
alert( aclean(arr) ); // "nap,teachers,ear" or "PAN,cheaters,era"
2525
```
2626

27-
对于所有的 anagram 组,需要保留任意一个单词
27+
对于所有的字谜(anagram)组,都应该保留其中一个词,但保留的具体是哪一个并不重要
2828

1-js/05-data-types/07-map-set/03-iterable-keys/solution.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

2-
这是因为 `map.keys()` 返回的是迭代器而非数组
2+
这是因为 `map.keys()` 返回的是可迭代对象而非数组
33

4-
我们可以使用方法 `Array.from` 来将它转化为数组
4+
我们可以使用方法 `Array.from` 来将它转换为数组
55

66

77
```js run

1-js/05-data-types/07-map-set/03-iterable-keys/task.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ importance: 5
44

55
# 迭代键
66

7-
我们希望得到 `map.keys()` 的数组然后继续对它进行处理(脱离开 map 本身)
7+
我们期望使用 `map.keys()` 得到一个数组,然后使用特定的方法例如 `.push` 等,对其进行处理
88

9-
但是有这样一个问题
9+
但是运行不了
1010

1111
```js run
1212
let map = new Map();
@@ -16,9 +16,9 @@ map.set("name", "John");
1616
let keys = map.keys();
1717

1818
*!*
19-
// 错误:numbers.push 不是一个函数
19+
// Error: keys.push is not a function
2020
keys.push("more");
2121
*/!*
2222
```
2323

24-
为什么?我们如何修改代码让 `keys.push` 正常工作
24+
为什么?我们应该如何修改代码让 `keys.push` 工作

0 commit comments

Comments
 (0)