Skip to content

Commit 0295170

Browse files
authored
Merge pull request #16 from HachemiH/master
Translate Map, Set, WeakMap and WeakSet in french language
2 parents 680c156 + d4ff32a commit 0295170

File tree

11 files changed

+210
-210
lines changed

11 files changed

+210
-210
lines changed

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

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

33
---
44

5-
# Filter unique array members
5+
# Filtrer les membres uniques du tableau
66

7-
Let `arr` be an array.
7+
Disons que `arr` est un tableau.
88

9-
Create a function `unique(arr)` that should return an array with unique items of `arr`.
9+
Créez une fonction `unique(arr)` qui devrait renvoyer un tableau avec les éléments uniques d'arr.
1010

11-
For instance:
11+
Par exemple :
1212

1313
```js
1414
function unique(arr) {
@@ -22,6 +22,6 @@ let values = ["Hare", "Krishna", "Hare", "Krishna",
2222
alert( unique(values) ); // Hare, Krishna, :-O
2323
```
2424

25-
P.S. Here strings are used, but can be values of any type.
25+
P.S. Ici, les chaînes de caractères sont utilisées, mais elles peuvent être des valeurs de n'importe quel type.
2626

27-
P.P.S. Use `Set` to store unique values.
27+
P.P.S. Utilisez `Set` pour stocker des valeurs uniques.

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
To find all anagrams, let's split every word to letters and sort them. When letter-sorted, all anagrams are same.
1+
Pour trouver tous les anagrammes, divisons chaque mot en lettres et trions-les. Lorsque ils sont triés par lettres, tous les anagrammes sont identiques.
22

3-
For instance:
3+
Par exemple :
44

55
```
66
nap, pan -> anp
@@ -9,14 +9,14 @@ cheaters, hectares, teachers -> aceehrst
99
...
1010
```
1111

12-
We'll use the letter-sorted variants as map keys to store only one value per each key:
12+
Nous allons utiliser les variantes triées par lettre comme clés de map pour stocker une seule valeur pour chaque clé :
1313

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

1818
for (let word of arr) {
19-
// split the word by letters, sort them and join back
19+
// diviser le mot en lettres, les trier et les rejoindre
2020
*!*
2121
let sorted = word.toLowerCase().split('').sort().join(''); // (*)
2222
*/!*
@@ -31,9 +31,9 @@ let arr = ["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"];
3131
alert( aclean(arr) );
3232
```
3333

34-
Letter-sorting is done by the chain of calls in the line `(*)`.
34+
Le tri des lettres se fait par la chaîne d'appels en ligne `(*)`.
3535

36-
For convenience let's split it into multiple lines:
36+
Pour plus de commodité, divisons-le en plusieurs lignes :
3737

3838
```js
3939
let sorted = arr[i] // PAN
@@ -43,21 +43,21 @@ let sorted = arr[i] // PAN
4343
.join(''); // anp
4444
```
4545

46-
Two different words `'PAN'` and `'nap'` receive the same letter-sorted form `'anp'`.
46+
Deux mots différents, `'PAN'` et `'nap'`, reçoivent la même forme de lettre triée `'anp'`.
4747

48-
The next line put the word into the map:
48+
La ligne suivante place le mot dans le map :
4949

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

54-
If we ever meet a word the same letter-sorted form again, then it would overwrite the previous value with the same key in the map. So we'll always have at maximum one word per letter-form.
54+
Si nous rencontrons à nouveau un mot trié de la même manière, il écrasera la valeur précédente avec la même clé dans le map. Nous aurons donc toujours au maximum un mot par lettre.
5555

56-
At the end `Array.from(map.values())` takes an iterable over map values (we don't need keys in the result) and returns an array of them.
56+
À la fin `Array.from(map.values())` prends un itérable sur les valeurs du `Map` (nous n'avons pas besoin des clés dans le résultat) et renvoi un tableau avec celles-ci.
5757

58-
Here we could also use a plain object instead of the `Map`, because keys are strings.
58+
Ici, nous pourrions également utiliser un objet simple au lieu du `Map`, car les clés sont des chaînes de caractères.
5959

60-
That's how the solution can look:
60+
Voilà à quoi la solution peut ressembler :
6161

6262
```js run demo
6363
function aclean(arr) {
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
importance: 4
1+
importance: 4
22

33
---
44

5-
# Filter anagrams
5+
# Filter les anagrams
66

7-
[Anagrams](https://en.wikipedia.org/wiki/Anagram) are words that have the same number of same letters, but in different order.
7+
[Anagrams](https://fr.wikipedia.org/wiki/Anagramme) sont des mots qui ont le même nombre de mêmes lettres, mais dans un ordre différent.
88

9-
For instance:
9+
Par exemple :
1010

1111
```
1212
nap - pan
1313
ear - are - era
1414
cheaters - hectares - teachers
1515
```
1616

17-
Write a function `aclean(arr)` that returns an array cleaned from anagrams.
17+
Ecrivez une fonction `aclean(arr)` qui retourne un tableau nettoyé des anagrammes.
1818

19-
For instance:
19+
Par exemple :
2020

2121
```js
2222
let arr = ["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"];
2323

24-
alert( aclean(arr) ); // "nap,teachers,ear" or "PAN,cheaters,era"
24+
alert( aclean(arr) ); // "nap,teachers,ear" ou "PAN,cheaters,era"
2525
```
2626

27-
From every anagram group should remain only one word, no matter which one.
27+
De chaque groupe d’anagrammes ne devrait rester qu’un mot, peu importe lequel.
2828

1-js/05-data-types/07-map-set-weakmap-weakset/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-
That's because `map.keys()` returns an iterable, but not an array.
2+
C’est parce que `map.keys()` retourne un itérable, mais pas un tableau.
33

4-
We can convert it into an array using `Array.from`:
4+
Nous pouvons le convertir en tableau en utilisant `Array.from` :
55

66

77
```js run

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

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

33
---
44

5-
# Iterable keys
5+
# Clés Iterables
66

7-
We want to get an array of `map.keys()` and go on working with it (apart from the map itself).
7+
Nous voulons obtenir un tableau de `map.keys()` et continuer à l'utiliser (en dehors du map lui même).
88

9-
But there's a problem:
9+
Mais il y a un problème :
1010

1111
```js run
1212
let map = new Map();
@@ -21,4 +21,4 @@ keys.push("more");
2121
*/!*
2222
```
2323

24-
Why? How can we fix the code to make `keys.push` work?
24+
Pourquoi ? Comment pouvons-nous corriger le code pour que `keys.push` fonctionne ?
Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
The sane choice here is a `WeakSet`:
1+
Le bon choix ici est un `WeakSet`:
22

33
```js
44
let messages = [
@@ -9,33 +9,33 @@ let messages = [
99

1010
let readMessages = new WeakSet();
1111

12-
// two messages have been read
12+
// deux messages ont été lus
1313
readMessages.add(messages[0]);
1414
readMessages.add(messages[1]);
15-
// readMessages has 2 elements
15+
// readMessages a 2 éléments
1616

17-
// ...let's read the first message again!
17+
// ...Relisons le premier message !
1818
readMessages.add(messages[0]);
19-
// readMessages still has 2 unique elements
19+
// readMessages a encore 2 éléments uniques
2020

21-
// answer: was the message[0] read?
21+
// réponse : le message[0] a-t-il été lu ?
2222
alert("Read message 0: " + readMessages.has(messages[0])); // true
2323

2424
messages.shift();
25-
// now readMessages has 1 element (technically memory may be cleaned later)
25+
// maintenant readMessages a 1 élément (techniquement, la mémoire peut être nettoyée plus tard)
2626
```
2727

28-
The `WeakSet` allows to store a set of messages and easily check for the existance of a message in it.
28+
Le `WeakSet` permet de stocker un ensemble de messages et de vérifier facilement l’existence d’un message.
2929

30-
It cleans up itself automatically. The tradeoff is that we can't iterate over it. We can't get "all read messages" directly. But we can do it by iterating over all messages and filtering those that are in the set.
30+
Il se nettoie automatiquement. Le compromis est que nous ne pouvons pas le parcourir. Nous ne pouvons pas obtenir "tous les messages lus" directement. Mais nous pouvons le faire en parcourant tous les messages et en filtrant ceux qui sont dans le set.
3131

32-
P.S. Adding a property of our own to each message may be dangerous if messages are managed by someone else's code, but we can make it a symbol to evade conflicts.
32+
P.S. Ajouter une propriété propre à chaque message peut être dangereux si les messages sont gérés par le code d’une autre personne, mais nous pouvons en faire un symbole pour éviter les conflits.
3333

34-
Like this:
34+
Comme ceci :
3535
```js
36-
// the symbolic property is only known to our code
36+
// la propriété symbolique n'est connue que de notre code
3737
let isRead = Symbol("isRead");
3838
messages[0][isRead] = true;
3939
```
4040

41-
Now even if someone else's code uses `for..in` loop for message properties, our secret flag won't appear.
41+
Maintenant, même si le code de quelqu'un d'autre utilise `for..in` pour les propriétés du message, notre indicateur secret n'apparaîtra pas.

1-js/05-data-types/07-map-set-weakmap-weakset/04-recipients-read/task.md

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

33
---
44

5-
# Store "unread" flags
5+
# Stocker les messages non-lus
66

7-
There's an array of messages:
7+
Il y a un tableau de messages :
88

99
```js
1010
let messages = [
@@ -14,10 +14,10 @@ let messages = [
1414
];
1515
```
1616

17-
Your code can access it, but the messages are managed by someone else's code. New messages are added, old ones are removed regularly by that code, and you don't know the exact moments when it happens.
17+
Votre code peut y accéder, mais les messages sont gérés par le code d’une autre personne. De nouveaux messages sont ajoutés, les anciens sont régulièrement supprimés par ce code et vous ne connaissez pas le moment exact où cela se produit.
1818

19-
Now, which data structure you could use to store information whether the message "have been read"? The structure must be well-suited to give the answer "was it read?" for the given message object.
19+
Maintenant, quelle structure de données pouvez-vous utiliser pour stocker des informations si le message "a été lu"? La structure doit être bien adaptée pour donner la réponse "a-t-il été lu ?" Pour l'objet de message donné.
2020

21-
P.S. When a message is removed from `messages`, it should disappear from your structure as well.
21+
P.S. Lorsqu'un message est supprimé des `messages`, il doit également disparaître de votre structure.
2222

23-
P.P.S. We shouldn't modify message objects directly. If they are managed by someone else's code, then adding extra properties to them may have bad consequences.
23+
P.P.S. Nous ne devrions pas modifier les objets de message directement. Si elles sont gérées par le code d’une autre personne, l’ajout de propriétés supplémentaires peut avoir de graves conséquences.

1-js/05-data-types/07-map-set-weakmap-weakset/05-recipients-when-read/solution.md

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

2-
To store a date, we can use `WeakMap`:
2+
Pour stocker une date, nous pouvons utiliser `WeakMap`:
33

44
```js
55
let messages = [
@@ -11,5 +11,5 @@ let messages = [
1111
let readMap = new WeakMap();
1212

1313
readMap.set(messages[0], new Date(2017, 1, 1));
14-
// Date object we'll study later
14+
// objet Date que nous étudierons plus tard
1515
```

1-js/05-data-types/07-map-set-weakmap-weakset/05-recipients-when-read/task.md

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

33
---
44

5-
# Store read dates
5+
# Stocker les dates de lectures
66

7-
There's an array of messages as in the [previous task](info:task/recipients-read). The situation is similar.
7+
Il existe un tableau de messages comme dans la [previous task](info:task/recipients-read). La situation est similaire.
88

99
```js
1010
let messages = [
@@ -14,6 +14,6 @@ let messages = [
1414
];
1515
```
1616

17-
The question now is: which data structure you'd suggest to store the information: "when the message was read?".
17+
La question qui se pose maintenant est la suivante : quelle structure de données suggérez-vous pour stocker les informations : "quand le message a-t-il été lu ?".
1818

19-
In the previous task we only needed to store the "yes/no" fact. Now we need to store the date and it, once again, should disappear if the message is gone.
19+
Dans la tâche précédente, nous n'avions besoin que de stocker le fait "oui/non". Nous devons maintenant stocker la date et cette fois encore, elle devrait disparaître si le message a disparu.

0 commit comments

Comments
 (0)