Skip to content

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

MethodeVerhaltenEmpfehlung
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

MethodeBeschreibungRü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

MethodeBeschreibungRü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 auf NaN
  • 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

  1. Number.isFinite() und Number.isNaN() verwenden:

    javascript
    // Prüfe, ob die Variable "input" eine gültige Zahl ist (kein NaN, kein Infinity)
  2. Object.keys/values/entries verwenden:

    javascript
    const person = { name: "Max", alter: 25, stadt: "Berlin" };
    // 1. Gib alle Schlüssel aus
    // 2. Gib alle Werte aus
    // 3. Gib alle Key-Value Paare aus
  3. Object filtern:

    javascript
    const 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!

Frei für alle Anfänger