Skip to content

Commit 5767e97

Browse files
authored
Merge pull request #197 from behrends/Object.keys_values_entries
Object.keys, values, entries
2 parents 629ea22 + 2c83632 commit 5767e97

File tree

4 files changed

+45
-48
lines changed

4 files changed

+45
-48
lines changed

1-js/05-data-types/09-keys-values-entries/01-sum-salaries/solution.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ let salaries = {
1717

1818
alert( sumSalaries(salaries) ); // 650
1919
```
20-
Or, optionally, we could also get the sum using `Object.values` and `reduce`:
20+
Oder optional könnten wir die Summe auch mit `Object.values` und `reduce` erhalten:
2121

2222
```js
23-
// reduce loops over array of salaries,
24-
// adding them up
25-
// and returns the result
23+
// reduce iteriert über das Array von Gehältern,
24+
// addiert diese
25+
// und gibt das Ergebnis zurück
2626
function sumSalaries(salaries) {
2727
return Object.values(salaries).reduce((a, b) => a + b, 0) // 650
2828
}

1-js/05-data-types/09-keys-values-entries/01-sum-salaries/task.md

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

33
---
44

5-
# Sum the properties
5+
# Summe der Eigenschaften
66

7-
There is a `salaries` object with arbitrary number of salaries.
7+
Es gibt ein `salaries` Objekt mit einer beliebigen Anzahl von Gehältern.
88

9-
Write the function `sumSalaries(salaries)` that returns the sum of all salaries using `Object.values` and the `for..of` loop.
9+
Schreibe die Funktion `sumSalaries(salaries)`, die die Summe aller Gehälter zurückgibt, indem sie `Object.values` und die Schleife `for..of` verwendet.
1010

11-
If `salaries` is empty, then the result must be `0`.
11+
Wenn `salaries` leer ist, dann muss das Ergebnis `0` sein.
1212

13-
For instance:
13+
Zum Beispiel:
1414

1515
```js
1616
let salaries = {
@@ -21,4 +21,3 @@ let salaries = {
2121

2222
alert( sumSalaries(salaries) ); // 650
2323
```
24-

1-js/05-data-types/09-keys-values-entries/02-count-properties/task.md

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

33
---
44

5-
# Count properties
5+
# Zähle Eigenschaften
66

7-
Write a function `count(obj)` that returns the number of properties in the object:
7+
Schreibe eine Funktion `count(obj)`, die die Anzahl der Eigenschaften in einem Objekt zurückgibt:
88

99
```js
1010
let user = {
@@ -15,7 +15,6 @@ let user = {
1515
alert( count(user) ); // 2
1616
```
1717

18-
Try to make the code as short as possible.
19-
20-
P.S. Ignore symbolic properties, count only "regular" ones.
18+
Versuche, den Code so kurz wie möglich zu halten.
2119

20+
P.S. Ignoriere symbolische Eigenschaften, zähle nur die "normalen".
Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,41 @@
1-
21
# Object.keys, values, entries
32

4-
Let's step away from the individual data structures and talk about the iterations over them.
3+
Lass uns einen Schritt zurücktreten von den einzelnen Datenstrukturen und über deren Iteration sprechen.
54

6-
In the previous chapter we saw methods `map.keys()`, `map.values()`, `map.entries()`.
5+
Im letzten Kapitel haben wir die Methoden `map.keys()`, `map.values()`, `map.entries()` gesehen.
76

8-
These methods are generic, there is a common agreement to use them for data structures. If we ever create a data structure of our own, we should implement them too.
7+
Diese Methoden sind generisch, es ist allgemein üblich, sie für Datenstrukturen zu verwenden. Wenn wir jemals eine eigene Datenstruktur erstellen, sollten wir sie ebenfalls implementieren.
98

10-
They are supported for:
9+
Sie werden unterstützt für:
1110

1211
- `Map`
1312
- `Set`
1413
- `Array`
1514

16-
Plain objects also support similar methods, but the syntax is a bit different.
15+
Einfache Objekte unterstützen auch ähnliche Methoden, aber die Syntax ist ein wenig anders.
1716

1817
## Object.keys, values, entries
1918

20-
For plain objects, the following methods are available:
19+
Für einfache Objekte sind die folgenden Methoden verfügbar:
2120

22-
- [Object.keys(obj)](mdn:js/Object/keys) -- returns an array of keys.
23-
- [Object.values(obj)](mdn:js/Object/values) -- returns an array of values.
24-
- [Object.entries(obj)](mdn:js/Object/entries) -- returns an array of `[key, value]` pairs.
21+
- [Object.keys(obj)](mdn:js/Object/keys) -- gibt ein Array von Schlüsseln zurück.
22+
- [Object.values(obj)](mdn:js/Object/values) -- gibt ein Array von Werten zurück.
23+
- [Object.entries(obj)](mdn:js/Object/entries) -- gibt ein Array von `[key, value]`-Paaren zurück.
2524

26-
Please note the distinctions (compared to map for example):
25+
Bitte beachte die Unterschiede (zun Beispiel im Vergleich zu Map):
2726

2827
| | Map | Object |
2928
|-------------|------------------|--------------|
30-
| Call syntax | `map.keys()` | `Object.keys(obj)`, but not `obj.keys()` |
31-
| Returns | iterable | "real" Array |
29+
| Aufrufsyntax | `map.keys()` | `Object.keys(obj)`, aber nicht `obj.keys()` |
30+
| Rückgabe | iterable | "echtes" Array |
3231

33-
The first difference is that we have to call `Object.keys(obj)`, and not `obj.keys()`.
32+
Der erste Unterschied ist, dass wir `Object.keys(obj)` aufrufen müssen, und nicht `obj.keys()`.
3433

35-
Why so? The main reason is flexibility. Remember, objects are a base of all complex structures in JavaScript. So we may have an object of our own like `data` that implements its own `data.values()` method. And we still can call `Object.values(data)` on it.
34+
Warum ist das so? Der Hauptgrund ist Flexibilität. Erinnere dich, Objekte sind die Basis aller komplexen Strukturen in JavaScript. Wir können also ein eigenes Objekt wie `data` haben, das seine eigene Methode `data.values()` implementiert. Und wir können immer noch `Object.values(data)` darauf anwenden.
3635

37-
The second difference is that `Object.*` methods return "real" array objects, not just an iterable. That's mainly for historical reasons.
36+
Der zweite Unterschied ist, dass die `Object.*` Methoden "echte" Array-Objekte zurückgeben, nicht nur ein Iterable. Das liegt hauptsächlich an historischen Gründen.
3837

39-
For instance:
38+
Zum Beispiel:
4039

4140
```js
4241
let user = {
@@ -49,38 +48,38 @@ let user = {
4948
- `Object.values(user) = ["John", 30]`
5049
- `Object.entries(user) = [ ["name","John"], ["age",30] ]`
5150

52-
Here's an example of using `Object.values` to loop over property values:
51+
Hier ist ein Beispiel für die Verwendung von `Object.values` zum Durchlaufen von Eigenschaftswerten:
5352

5453
```js run
5554
let user = {
5655
name: "John",
5756
age: 30
5857
};
5958

60-
// loop over values
59+
// Schleife über Werte
6160
for (let value of Object.values(user)) {
62-
alert(value); // John, then 30
61+
alert(value); // John, dann 30
6362
}
6463
```
6564

66-
```warn header="Object.keys/values/entries ignore symbolic properties"
67-
Just like a `for..in` loop, these methods ignore properties that use `Symbol(...)` as keys.
65+
```warn header="Object.keys/values/entries ignorieren symbolische Eigenschaften"
66+
Wie bei einer `for..in`-Schleife, ignorieren diese Methoden Eigenschaften, die `Symbol(...)` als Schlüssel verwenden.
6867
69-
Usually that's convenient. But if we want symbolic keys too, then there's a separate method [Object.getOwnPropertySymbols](mdn:js/Object/getOwnPropertySymbols) that returns an array of only symbolic keys. Also, there exist a method [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) that returns *all* keys.
68+
Normalerweise ist das praktisch. Aber wenn wir auch symbolische Schlüssel wollen, dann gibt es eine separate Methode [Object.getOwnPropertySymbols](mdn:js/Object/getOwnPropertySymbols), die ein Array von nur symbolischen Schlüsseln zurückgibt. Außerdem gibt es die Methode [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys), die *alle* Schlüssel zurückgibt.
7069
```
7170

7271

73-
## Transforming objects
72+
## Transformation von Objekten
7473

75-
Objects lack many methods that exist for arrays, e.g. `map`, `filter` and others.
74+
Objekten fehlen viele Methoden, die für Arrays existieren, z.B. `map`, `filter` und andere.
7675

77-
If we'd like to apply them, then we can use `Object.entries` followed by `Object.fromEntries`:
76+
Wenn wir sie anwenden möchten, dann können wir `Object.entries` gefolgt von `Object.fromEntries` verwenden:
7877

79-
1. Use `Object.entries(obj)` to get an array of key/value pairs from `obj`.
80-
2. Use array methods on that array, e.g. `map`, to transform these key/value pairs.
81-
3. Use `Object.fromEntries(array)` on the resulting array to turn it back into an object.
78+
1. Verwende `Object.entries(obj)`, um ein Array von Schlüssel/Wert-Paaren von `obj` zu erhalten.
79+
2. Verwende Array-Methoden auf diesem Array, z.B. `map`, um diese Schlüssel/Wert-Paare zu transformieren.
80+
3. Verwende `Object.fromEntries(array)` auf dem resultierenden Array, um es wieder in ein Objekt umzuwandeln.
8281

83-
For example, we have an object with prices, and would like to double them:
82+
Zum Beispiel könnten wir ein Objekt mit Preisen haben und möchten diese verdoppeln:
8483

8584
```js run
8685
let prices = {
@@ -91,13 +90,13 @@ let prices = {
9190

9291
*!*
9392
let doublePrices = Object.fromEntries(
94-
// convert prices to array, map each key/value pair into another pair
95-
// and then fromEntries gives back the object
93+
// Preise in ein Array konvertieren, jedes Schlüssel/Wert-Paar in ein anderes Paar umwandeln
94+
// und dann gibt fromEntries das Objekt zurück
9695
Object.entries(prices).map(entry => [entry[0], entry[1] * 2])
9796
);
9897
*/!*
9998

10099
alert(doublePrices.meat); // 8
101100
```
102101

103-
It may look difficult at first sight, but becomes easy to understand after you use it once or twice. We can make powerful chains of transforms this way.
102+
Es mag auf den ersten Blick schwierig erscheinen, wird aber leicht verständlich, nachdem Du es ein- oder zweimal verwendet hast. Auf diese Weise können wir leistungsstarke Transformationsketten erstellen.

0 commit comments

Comments
 (0)