Appearance
Kapitel 16: Neue Number- und Object-Methoden
16.1 Number-Erweiterungen: Number.isFinite(), Number.isNaN()
🔢 Number.isFinite() - Prüfen, ob endliche Zahl
Prüft, ob ein Wert eine endliche Zahl ist (kein Infinity, keir NaN).
javascript
// ❌ Alte Methode (ES5) - globale isFinite()
console.log(isFinite(42)); // true
console.log(isFinite(Infinity)); // false
console.log(isFinite("42")); // true ❌ (String wird zu Zahl konvertiert!)
// ✅ Neue Methode (ES6) - Number.isFinite()
console.log(Number.isFinite(42)); // true
console.log(Number.isFinite(Infinity)); // false
console.log(Number.isFinite("42")); // false ✅ (nicht konvertiert!)
console.log(Number.isFinite(NaN)); // false🔢 Number.isNaN() - Prüfen, ob NaN
Prüft, ob ein Wert NaN ist (nicht konvertierend).
javascript
// ❌ Alte Methode (ES5) - globale isNaN()
console.log(isNaN(NaN)); // true
console.log(isNaN("Hallo")); // true ❌ (String wird zu NaN konvertiert!)
// ✅ Neue Methode (ES6) - Number.isNaN()
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("Hallo")); // false ✅ (nicht konvertiert!)
console.log(Number.isNaN(42)); // false
console.log(Number.isNaN("42")); // false📊 Vergleich: Globale Methode vs. Number-Methode
| Methode | Verhalten | Empfehlung |
|---|---|---|
isFinite() | Konvertiert zu Zahl vor Prüfung | ❌ Vermeiden |
Number.isFinite() | Prüft ohne Konvertierung | ✅ Verwenden |
isNaN() | Konvertiert zu Zahl vor Prüfung | ❌ Vermeiden |
Number.isNaN() | Prüft ohne Konvertierung | ✅ Verwenden |
🎯 Praxisbeispiel: Sichere Zahlenprüfung
javascript
function validateNumber(input) {
// ✅ Sichere Prüfung
if (Number.isFinite(input)) {
console.log(`${input} ist eine gültige, endliche Zahl.`);
} else {
console.log(`${input} ist keine gültige, endliche Zahl.`);
}
}
validateNumber(42); // "42 ist eine gültige, endliche Zahl."
validateNumber(Infinity); // "Infinity ist keine gültige, endliche Zahl."
validateNumber("42"); // ""42" ist keine gültige, endliche Zahl." ✅16.2 Object-Methoden: Object.keys(), Object.values(), Object.entries()
🗝️ Object.keys() - Alle Schlüssel (Keys) als Array
Gibt ein Array der eigenen aufzählbaren Eigenschaftsnamen zurück.
javascript
const person = {
name: "Max",
alter: 25,
stadt: "Berlin"
};
// ❌ Alte Methode (ES5) - for...in Schleife
var keys1 = [];
for (var key in person) {
if (person.hasOwnProperty(key)) {
keys1.push(key);
}
}
console.log(keys1); // ["name", "alter", "stadt"]
// ✅ Neue Methode (ES6) - Object.keys()
const keys2 = Object.keys(person);
console.log(keys2); // ["name", "alter", "stadt"]🗝️ Object.values() - Alle Werte als Array (ES2017)
Gibt ein Array der eigenen aufzählbaren Eigenschaftswerte zurück.
javascript
const person = {
name: "Max",
alter: 25,
stadt: "Berlin"
};
const values = Object.values(person);
console.log(values); // ["Max", 25, "Berlin"]🗝️ Object.entries() - Key-Value Paare als Array (ES2017)
Gibt ein Array von [key, value] Paaren zurück.
javascript
const person = {
name: "Max",
alter: 25,
stadt: "Berlin"
};
const entries = Object.entries(person);
console.log(entries);
// [
// ["name", "Max"],
// ["alter", 25],
// ["stadt", "Berlin"]
// ]🎯 Praxisbeispiel 1: Object durchsuchen
javascript
const config = {
apiUrl: "https://api.example.com",
timeout: 5000,
retry: 3
};
// Alle Schlüssel durchsuchen
Object.keys(config).forEach(key => {
console.log(`${key}: ${config[key]}`);
});
// Ausgabe:
// apiUrl: https://api.example.com
// timeout: 5000
// retry: 3🎯 Praxisbeispiel 2: Object in Map umwandeln
javascript
const person = {
name: "Max",
alter: 25,
stadt: "Berlin"
};
// Object → Map
const personMap = new Map(Object.entries(person));
console.log(personMap.get("name")); // "Max"
console.log(personMap.get("alter")); // 25🎯 Praxisbeispiel 3: Map in Object umwandeln
javascript
const personMap = new Map();
personMap.set("name", "Max");
personMap.set("alter", 25);
personMap.set("stadt", "Berlin");
// Map → Object
const personObj = Object.fromEntries(personMap);
console.log(personObj);
// { name: "Max", alter: 25, stadt: "Berlin" }16.3 Zusammenfassung der neuen Methoden
📊 Übersicht: Number-Methoden
| Methode | Beschreibung | Rückgabe |
|---|---|---|
Number.isFinite() | Prüft, ob endliche Zahl (ohne Konvertierung) | true / false |
Number.isNaN() | Prüft, ob NaN (ohne Konvertierung) | true / false |
📊 Übersicht: Object-Methoden
| Methode | Beschreibung | Rückgabe |
|---|---|---|
Object.keys(obj) | Array der Schlüssel | [key1, key2, ...] |
Object.values(obj) | Array der Werte | [value1, value2, ...] |
Object.entries(obj) | Array der [key, value] Paare | [[key1, value1], ...] |
Object.fromEntries(arr) | Array der Paare → Object | { key1: value1, ... } |
16.4 Praxis: Object-Verarbeitung in der modernen Entwicklung
🎯 Beispiel 1: API-Antwort verarbeiten
javascript
// Angenommen, eine API gibt folgendes zurück:
const apiResponse = {
status: "success",
data: {
user: {
id: 1,
name: "Max Mustermann",
email: "max@example.com"
}
}
};
// ✅ Object.entries() zum Durchsuchen
Object.entries(apiResponse.data.user).forEach(([key, value]) => {
console.log(`${key}: ${value}`);
});
// Ausgabe:
// id: 1
// name: Max Mustermann
// email: max@example.com🎯 Beispiel 2: Object filtern
javascript
const person = {
name: "Max",
alter: 25,
stadt: "Berlin",
land: "Deutschland"
};
// ✅ Object.entries() + filter() + Object.fromEntries()
const filtered = Object.fromEntries(
Object.entries(person).filter(([key, value]) => key !== "land")
);
console.log(filtered);
// { name: "Max", alter: 25, stadt: "Berlin" }🎯 Beispiel 3: Object transformieren
javascript
const prices = {
"Apfel": 1.2,
"Banane": 0.8,
"Orange": 1.5
};
// ✅ Alle Preise um 20% erhöhen
const increasedPrices = Object.fromEntries(
Object.entries(prices).map(([fruit, price]) => [fruit, price * 1.2])
);
console.log(increasedPrices);
// { Apfel: 1.44, Banane: 0.96, Orange: 1.8 }🎉 Zusammenfassung
In diesem Kapitel hast du gelernt:
- ✅
Number.isFinite()- Sichere Prüfung auf endliche Zahlen - ✅
Number.isNaN()- Sichere Prüfung aufNaN - ✅
Object.keys()- Alle Schlüssel als Array - ✅
Object.values()- Alle Werte als Array - ✅
Object.entries()- Key-Value Paare als Array - ✅
Object.fromEntries()- Array von Paaren zurück in Object - ✅ Praxisanwendungen (API-Verarbeitung, Filtern, Transformieren)
📝 Übung
Number.isFinite()undNumber.isNaN()verwenden:javascript// Prüfe, ob die Variable "input" eine gültige Zahl ist (kein NaN, kein Infinity)Object.keys/values/entriesverwenden:javascriptconst person = { name: "Max", alter: 25, stadt: "Berlin" }; // 1. Gib alle Schlüssel aus // 2. Gib alle Werte aus // 3. Gib alle Key-Value Paare ausObject filtern:
javascriptconst data = { a: 1, b: 2, c: 3, d: 4 }; // Erstelle ein neues Object, das nur Schlüssel mit geradem Wert enthält
➡️ Nächstes Kapitel
In Kapitel 17 lernen wir ES6 Praxis-Projekte - Kombination aller gelernten Konzepte in echten Anwendungsfällen!
