Pierwszy błąd czy wszystkie błędy

Wyjątki i walidacja - JavaScript od podstaw: konsola (JavaScript)

Dwa podejścia do walidacji tych samych danych. `validateFirst` rzuca wyjątek przy pierwszym problemie: prosto, ale użytkownik poprawia błędy po jednym. `validateAll` niczego nie rzuca, tylko zbiera komunikaty do tablicy i zwraca ją (pusta tablica = dane poprawne). Formularze zwykle pokazują wszystkie błędy naraz.

const user = { login: 'ab', email: 'ola.example.com', age: 9 };

function rules(u) {
  return [
    [u.login.length >= 3, 'login: co najmniej 3 znaki'],
    [u.email.includes('@'), 'email: brak znaku @'],
    [u.age >= 13, 'wiek: co najmniej 13 lat'],
  ];
}

function validateFirst(u) {
  for (const [ok, message] of rules(u)) {
    if (!ok) throw new Error(message);
  }
}

function validateAll(u) {
  return rules(u).filter(([ok]) => !ok).map(([, message]) => message);
}

try {
  validateFirst(user);
} catch (e) {
  console.log('Pierwszy błąd:', e.message);
}

const errors = validateAll(user);
console.log(`Wszystkie błędy (${errors.length}):`);
for (const message of errors) console.log(' - ' + message);
console.log('Poprawny?', validateAll({ login: 'ola', email: '[email protected]', age: 15 }).length === 0);

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu JavaScript od podstaw: konsola·Zaloguj się, aby zapisać postęp na koncie.