> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baenninger.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Sets und Maps

Sets und Maps sind zwei alternative Datenstrukturen zu Arrays und Objekten.

## Sets

Mit dem Set-Objekt kannst du eindeutige Werte jedes Typs speichern, egal ob primitive Werte oder Objektreferenzen.

### Sets erstellen

```javascript theme={null}
const ordersSet = new Set(['Pasta', 'Pizza', 'Pizza', 'Risotto', 'Pasta', 'Pizza']);
```

Wie wir sehen können, werden Duplikate sofort entfernt.

### Datenzugriff

Es gibt in Sets keine Möglichkeit Elemente abzurufen. Jedoch besteht dazu auch kein Bedarf, da die Reihenfolge egal ist und es keine Duplikate gibt. Es reicht uns mit `has()` zu überprüfen, ob ein Element in jenem Set ist.

### Länge

```javascript theme={null}
ordersSet.size;
```

### `has()`

Um zu überprüfen, ob ein bestimmtes Element in einem Set ist, benutzen wir die Methode `has()`.

```javascript theme={null}
ordersSet.has('Pizza');
ordersSet.has('Bread');
```

### Sets modifizieren

#### `add()`

```
ordersSet.add('Garlic Bread');
```

#### `delete()`

```javascript theme={null}
ordersSet.delete('Risotto');
```

## Maps

Das Map-Objekt enthält Schlüssel-Wert-Paare und merkt sich die ursprüngliche Einfügereihenfolge der Schlüssel. Jeder Wert (sowohl Objekte als auch primitive Werte) kann entweder als Schlüssel oder als Wert verwendet werden.

### Maps erstellen

```javascript theme={null}
const restaurant = new Map();
```

### Datenzugriff

```javascript theme={null}
restaurant.get('name');
restaurant.get(true);
restaurant.get(1);
restaurant.get(3);
```

### Grösse

```
restaurant.size;
```

### `has()`

```javascript theme={null}
restaurant.has('categories');
restaurant.has('open');
restaurant.has('closed');
```

### Maps modifizieren

#### `set()`

```javascript theme={null}
restaurant.set('name', 'Classico Italiano');
restaurant.set(1, 'Firenze, Italy');
restaurant.set(2, 'Lisbon, Portugal');
```

Auch die Verkettung von mehreren `set()`-Methoden ist möglich.

```javascript theme={null}
restaurant
  .set('categories', ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'])
  .set('open', 11)
  .set('close', 23)
  .set(true, 'We are open!')
  .set(false, 'We are closed!');
```

#### `delete()`

```javascript theme={null}
restaurant.delete(2);
```

#### `clear()`

Mit der `clear()`-Methode können wir alle Key-Value-Paare einer Map löschen.

```javascript theme={null}
restaurant.clear();
```
