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.